#include <stdio.h> #include <string.h> void myscat(char str1[], char str2[]); #define N 80 int main() {char s[N], t[N]; gets(s); gets(t); ; //调用函数 puts(s); return 0; } void myscat(char str1[], char str2[]) {int i = 0, j; while (str1[i] != '\0') ; for(j=0; ;i++) { ; j ; } str1[i] = '\0'; }
时间: 2023-11-27 10:51:08 浏览: 159
这是一个字符串拼接函数 myscat 的代码,但是其中有一些问题:
1. 函数没有返回值,应该指定返回类型为 void。
2. 函数体中第 6 行的 while 循环没有作用,应该删除。
3. 函数体中第 7 行的 for 循环语法有误,应该是 for(j=0; str2[j] != '\0'; j++)。
4. 函数体中第 9 行的 j 没有被使用,应该将 j 的值加到 str1 的下标 i 上。
修改后的代码如下:
```
#include <stdio.h>
#include <string.h>
void myscat(char str1[], char str2[]) {
int i = 0, j;
while (str1[i] != '\0') {
i++;
}
for(j=0; str2[j] != '\0'; j++) {
str1[i+j] = str2[j];
}
str1[i+j] = '\0';
}
#define N 80
int main() {
char s[N], t[N];
gets(s);
gets(t);
myscat(s, t);
puts(s);
return 0;
}
```
相关问题
为程序添加备注注意对齐#include <stdio.h> #include <stdlib.h> #include <string.h> #include <dirent.h> #include <unistd.h> #include <sys/types.h> #include <sys/stat.h> #include <pwd.h> #include <grp.h> #include <time.h> void shell_ls_l(char *file,struct stat st) { char limi
/*
* 该函数实现了类似于Linux终端中的ls -l命令的功能,可以显示文件的详细信息。
* 参数file为要显示信息的文件名;
* 参数st为文件的stat结构体,包含了文件的各种信息,如权限、大小、修改时间等。
*/
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <dirent.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <pwd.h>
#include <grp.h>
#include <time.h>
void shell_ls_l(char *file,struct stat st) {
char limit[10]="rwxrwxrwx"; // 文件权限对应的字符
char perms[11]="----------"; // 文件权限字符串
int i=0;
int j=0;
int k=0;
struct passwd *user; // 用户信息结构体
struct group *group; // 用户组信息结构体
// 设置文件权限字符串
for(i=0;i<9;i++) {
if(st.st_mode & (1<<(8-i))) {
perms[i]=limit[i];
}
}
// 根据文件类型设置第一个字符
switch(st.st_mode & S_IFMT) {
case S_IFLNK:
perms[0]='l';
break;
case S_IFDIR:
perms[0]='d';
break;
case S_IFCHR:
perms[0]='c';
break;
case S_IFBLK:
perms[0]='b';
break;
case S_IFIFO:
perms[0]='p';
break;
case S_IFSOCK:
perms[0]='s';
break;
default:
perms[0]='-';
break;
}
printf("%s ",perms); // 输出文件权限
printf("%d ",(int)st.st_nlink); // 输出硬链接数
user=getpwuid(st.st_uid); // 获取文件拥有者信息
group=getgrgid(st.st_gid); // 获取文件拥有者组信息
printf("%s %s ",user->pw_name,group->gr_name); // 输出拥有者和所属组
printf("%8ld ",st.st_size); // 输出文件大小
char *time_str=ctime(&st.st_mtime); // 获取文件最后修改时间
time_str[strlen(time_str)-1]='\0'; // 去掉不需要的换行符
printf("%s ",time_str); // 输出最后修改时间
printf("%s\n",file); // 输出文件名
}
补全#include <stdio.h> #include <string.h> void myscat(char str1[], char str2[]); #define N 80 int main() {char s[N], t[N]; gets(s); gets(t); 2 分 ; //调用函数 puts(s); return 0; } void myscat(char str1[], char str2[]) {int i = 0, j; while (str1[i] != '\0') 2 分 ; for(j=0; 2 分 ;i++) { 2 分 ; j 2 分 ; } str1[i] = '\0'; }
补全代码如下:
```c
#include <stdio.h>
#include <string.h>
void myscat(char str1[], char str2[]);
#define N 80
int main() {
char s[N], t[N];
gets(s);
gets(t);
myscat(s, t); //调用函数
puts(s);
return 0;
}
void myscat(char str1[], char str2[]) {
int i = 0, j;
while (str1[i] != '\0')
i++;
for(j=0; str2[j] != '\0';i++) {
str1[i] = str2[j];
j++;
}
str1[i] = '\0';
}
```
这个程序实现了自定义字符串拼接函数 `myscat`,它的功能是将 `str2` 拼接到 `str1` 的末尾。在 `myscat` 函数中,我们首先要找到 `str1` 的末尾,然后逐个将 `str2` 中的字符复制到 `str1` 的末尾,最后加上字符串结束标志 `\0`。在主函数中,我们先读入两个字符串,然后调用 `myscat` 函数,最后输出结果。
阅读全文