C函数使用strcat和字符串

alt*_*alt 0 c string pointers strcat

我正在努力学习C.所以我挑战自己创建一个two()有效"双"字符串的函数.

two("foo") // => "foofoo"
Run Code Online (Sandbox Code Playgroud)

但是我在使用strcat()指针时遇到了麻烦.这就是我所拥有的:

char *two(char *foo);

int main() {
    printf("The value of two(\"foo\") is %s", two("foo"));
}

char *two(char *foo) {
    return strcat(foo, foo);
}
Run Code Online (Sandbox Code Playgroud)

它编译但运行时出错.为什么?

我感觉错误在于使用strcat指针字符串.

Yu *_*Hao 7

您有多种strcat违规规则:

  • 第一个参数不应该是字符串文字,因为它是不可修改的.
  • 第一个参数必须足够大才能连接字符串.
  • 第一个和第二个参数不应重叠.