读取整数直到C中的EOF

时间:2015-12-05 23:20:32

标签: c eof

我需要阅读所有整数直到EOF。我正在尝试这个代码,问题是该程序没有检测到EOF并继续运行。我需要的是接收所有数据并自动进入下一行代码(代码在输入后按Ctrl-D工作)。

int x, sum = 0;

while (scanf("%d", &x) == 1) {
    sum += x;
}

if (feof(stdin)) {
    printf ( "SUM: %d\n", sum );
} else {
    printf("ERROR\n");
}

return 0;

1 个答案:

答案 0 :(得分:0)

您想如何指定EOF?

  • ^D是在Unix终端中执行此操作的方法。在Windows终端中,^Z执行相同的操作。 scanf将返回-1feof()将返回非零。但是stdin的任何进一步输入都会失败。

  • 你想点击回车键吗?如果是,则必须在scanf之后检查,否则下次调用scanf将会读取换行并忽略它。

  • 如果您键入既不是空格也不是数字的内容,scanf将返回0并在输入流中保留不匹配的字符。您的程序将打印ERROR。这是发生了什么事吗?