我正在尝试连接2个字符数组,但是当我尝试连接2个字符数组时,它不起作用,并且我的o / p控制台挂起并且不打印任何内容。
char *str[2];
str[0] = "Hello ";
str[1] = "World";
strcat(str[0],str[1]);
printf("%s\n",str[0]);
我什至尝试了下面的代码也失败了
char *str1 = "Hello ";
char *str2 = "World";
strcat(str1,str2);
printf("%s\n",str1);
有人可以解释吗?
TIA。
最佳答案
char *str1 = "Hello ";
char *str2 = "World";
strcat(str1,str2);
printf("%s\n",str1);
在这里,您有str1指向静态的内存区域,该区域可能位于只读页面上,并且strcat尝试在“ Hello”字符串末尾的该区域中进行写入。
strcat()函数将src字符串附加到dest字符串,覆盖dest末尾的终止空字节('\ 0'),然后添加一个终止空字节。字符串可能不会重叠,并且目标字符串必须具有足够的空间以容纳结果。如果dest不够大,则程序行为是不可预测的。
一种方法是这样
char str1[100] = "Hello ";
char *str2 = "World";
strcat(str1,str2);
printf("%s\n",str1);
而不是100,您可以选择一个大小以使串联(包括最后的NULL字符)发生。
关于c - c中字符数组的串联,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/56643131/