检查是否为(char =='\ n')时出现分段错误

时间:2013-04-19 22:53:49

标签: c segmentation-fault getchar

我一直在努力解决这个问题超过一个小时,我似乎无法找出为什么会出现这个错误。

int  inp, count;
char numBuff[21];

count = 0;
while((inp=getchar()) != EOF) { // get Value (last field)
    printf("input is '%c'\n", inp);
    if (inp == '\n') break;
    if (inp == ' ') {
        continue;
    }
    numBuff[count++] = inp;
    printf("go back through loop\n");
}
printf("Out!");
numBuff[count] = '\0';

如果我输入1013,我会得到以下内容

input is '1'
go back through loop
input is '0'
go back through loop
input is '1'
go back through loop
input is '3'
go back through loop
input is '
'
Segmentation fault (core dumped)

我唯一可以从中收集的是,当我检查inp =='\ n'时它是否失败,但为什么?我通过循环printf移动回到检查后是否inp =='\ n'并且它从未到达那个,所以我知道它正在那里发生。

2 个答案:

答案 0 :(得分:6)

count未初始化,用作数组索引。将其初始化为0。

答案 1 :(得分:3)

收集错误是在循环中,但你怎么知道?您是否尝试使用调试器 - 这是一个有用的工具,可以帮助查明崩溃发生的位置,并允许您检查程序的状态。

美元到甜甜圈,在循环后代码中发生崩溃。您没有看到“Out”消息的原因是您不打印换行符,因此标​​准库会缓冲输出。