非常简单的C代码不起作用

时间:2016-03-05 16:18:06

标签: c

#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”。

我对此非常陌生,所以请记住这一点。

感谢您的帮助。

1 个答案:

答案 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