#include <stdio.h>
char *strcat_ (char s1[], char s2[]) {
int x = 0, y = 0;
while (s1[x] != '\0') {
x++;
}
while (s2[y] != 0) {
s1[x] = s2 [y];
x++;
y++;
}
s1[x] = '\0';
return s1;
}
main() {
char c;
c = *strcat_("John ", "Trump");
printf ("%s", &c);
}
所以这是我的代码,当我尝试运行时,我得到这个“总线错误:10”。
我对此非常陌生,所以请记住这一点。
感谢您的帮助。
答案 0 :(得分:1)
这些行存在一些问题 -
char c;
c = *strcat_("John ", "Trump");
printf ("%s", &c);
1。您的功能return
char *
不是char
。
2。虽然调用函数时不会对其应用*
运算符。
3。您倾向于修改函数中的常量,导致 UB 以及没有足够的内存来保存连接的部分 。
c = *strcat_("John ", "Trump");
^^^^ This is a constant.
4. 如果您要打印内容,请printf
不要传递变量地址。
您可以写如下 -
char a[100]="John";
//char c;
strcat_(a, "Trump") //let type be void and let char a[] hold complete string