我正在尝试连接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/

10-11 22:37
查看更多