【发布时间】:2023-09-29 16:56:01
【问题描述】:
我需要读取所有整数,直到 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;
【问题讨论】:
-
那有什么问题?
-
您已正确完成所有操作,并且它的行为应如此。当您的标准输入是终端时,^D 发送 EOF,它也适用于真实文件。
-
也许对于 EOF 对 STDIN 的含义存在混淆?这并不意味着“空白行”。