c - strcat 导致段错误

标签 c string segmentation-fault

这会导致段错误:

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/

相关文章:

c - 使用指针和数组时关于不兼容指针类型赋值的警告?

我能否以编程方式更改全局偏移表/GOT 或程序链接表/PLT?

c - 当我用 fork 运行两个进程时出现段错误

c# - 在空格上拆分一个字符串,然后再在一个字符上拆分一个空格

c - 我的 C 应用程序中出现段错误

c - 使用 strcat() 的段错误

c - 内存寻址和指针

C: 'run' 命令使用 waitpid & 命令行输入

c# - 我现在如何通过时间字符串和日期时间来获得差异?

带有特殊字符的 Python 正则表达式