为什么我会收到Segmentation Fault
错误?我已经记录了很多,但无法澄清这一点。
char * sir=malloc(50*sizeof(char));
char * aux;
int i;
for(i=1;;i++)
{
fgets(aux, 50, stdin);
if(strcmp(aux,"END")==0)
break;
else
{
sir[i]=malloc(50 * sizeof(char));
strcpy(aux,sir[i]);
}
}
如果我使用静态分配,那么我会得到一个无限循环。
答案 0 :(得分:1)
指针aux
未初始化且具有不确定的值
char * aux;
因此在此循环中尝试使用指针
写入数据for(i=1;;i++)
{
fgets(aux, 50, stdin);
//...
导致程序的行为未定义。
也许这是一个错字,你的意思是str
而不是aux
无论如何这个陈述
sir[i]=malloc(50 * sizeof(char));
没有意义。
此cpmparison也是错误的
if(strcmp(aux,"END") == 0)
因为使用fgets
读取的字符串可以包含换行符。