这会导致段错误:
char str1[60];
char**array;
array=malloc( str_nos * sizeof(char *) );
array[i]=malloc( str_len * sizeof(char *) );
strcat(array[i],str1);
strcat(array[i]," ");
str1
取自 scanf
,它少于 60 个字符。 array[i]
来自动态字符串数组。
您知道导致问题的原因吗?它只发生在大量的 scanf
上。
最佳答案
至少有两种可能:
如果
array[i]
指向的缓冲区没有足够的空间,那么您将覆盖缓冲区的末尾,这通常会导致段错误。其中一个字符串未正确以 null 结尾,因此
strcat
只是开始遍历内存。
关于c - strcat 导致段错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8249257/