在另一个函数中使用strcat:分段错误(核心转储)

Har*_*der 2 c function fault strcat

    static void foo(unsigned char *cmd)
    {
        strcat(cmd, "\r\n");
        printf("\r\nfoo: #%s#", cmd);

    }
    int main()
    {
        foo("test");
        return 0;
    }
Run Code Online (Sandbox Code Playgroud)

编译器说分段错误(核心转储)这里的实际问题是什么?

usr*_*usr 6

你有未定义的行为.您不能修改字符串文字.cmd指向字符串文字,并strcat()尝试连接到它,这是问题.

  int main(void)
    {
        char arr[256] = "test";
        foo(arr);
        return 0;
    }
Run Code Online (Sandbox Code Playgroud)

一般需要使用时要小心strcpy(),并strcat()用C等,因为是你完全缓冲区溢出的可能性.在我的例子中,我使用的数组大小为256,这对你的例子来说已经足够了.但是如果你要连接一些未知大小的东西,你需要小心.