我需要阅读所有整数直到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;
答案 0 :(得分:0)
您想如何指定EOF?
^D
是在Unix终端中执行此操作的方法。在Windows终端中,^Z
执行相同的操作。 scanf
将返回-1
,feof()
将返回非零。但是stdin的任何进一步输入都会失败。
你想点击回车键吗?如果是,则必须在scanf
之后检查,否则下次调用scanf
将会读取换行并忽略它。
如果您键入既不是空格也不是数字的内容,scanf
将返回0
并在输入流中保留不匹配的字符。您的程序将打印ERROR
。这是发生了什么事吗?