【发布时间】:2012-10-25 01:40:22
【问题描述】:
我收到内部 while 循环的分段错误错误。
char **c;
c=(char **)malloc(3*(N-1)*sizeof(char *));
for(int i=0;i<3*(N-1);)
{
char *temp;
gets(temp);
while(*temp!='$')
{
j=0;
while(*temp!=' ')
{
*(c[i]+j)=*(temp+j);
j++;
}
i++;
}
i++;
}
抱歉缩进不当。我知道操作 char * 字符串会导致错误。但我不确定这个错误。我试图将 tmp 字符串分成三个不同的字符串。
【问题讨论】:
-
您应该使用所有警告和调试信息进行编译(例如,在 Linux 上使用
gcc -Wall -g)并使用调试器(例如,在 Linux 上使用gdb)。学习使用调试器(和编译器)实际上是学习 C 编程过程的一部分。您可能还想使用内存泄漏检测器,例如valgrind -
您还应该避免使用
gets,这是一个不推荐使用的危险函数(并已从最新的C中删除标准)。您可以使用getline或fgets
标签: c pointers segmentation-fault strcpy