-1

我已经为此苦苦挣扎了一个多小时,但我似乎无法找出为什么会出现此错误。

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 将 go 返回到检查 if inp == '\n' 之后,它也从未达到那个,所以我知道它在那里发生。

4

2 回答 2

6

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

于 2013-04-19T22:57:02.180 回答
3

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

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

于 2013-04-19T23:09:53.130 回答