分段错误,指针数组

时间:2015-12-05 13:23:02

标签: c arrays pointers

为什么我会收到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]);
    }
}

如果我使用静态分配,那么我会得到一个无限循环。

1 个答案:

答案 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读取的字符串可以包含换行符。