为什么错误字符串不适用于 strcat?



在下面的代码中,在注释strcat时,str1会返回为最初声明的,直到单词"享受";但是在使用strcat时,它抛出segfault。我很困惑为什么没有进行串联,因为我声明了一个动态分配的字符串。

char * kitchen(int cost)
{
cost = 100;
char *str1 = (char *)malloc(sizeof(char)* 70);
str1 = "n Food's ready bruh, Enjoyy!!";
char *str2 = (char *)malloc(sizeof(char)* 70);
sprintf(str2, " But do pay %d", cost );
strcat(str1, str2);
return str1;
}

更换

str1 = "n Food's ready bruh, Enjoyy!!";

strcpy(str1, "n Food's ready bruh, Enjoyy!!");

现场演示。

尽管有动态分配,"n Food's ready bruh, Enjoyy!!"仍然是一个字符串文字,并且仍然被C视为只读。您的赋值仅将str1指向该字符串文字。

相关内容

  • 没有找到相关文章

最新更新