while (scanf("%d %d", &a, &b) != EOF)
时间: 2025-06-27 09:16:39 浏览: 19
### C语言 `while` 和 `scanf` 读取多个整数直到 EOF 的用法
在C语言中,可以利用 `while` 循环配合 `scanf` 函数来持续读取多个整数值,直至遇到文件结束符 (EOF)。此方法适用于处理未知长度的输入序列。
#### 使用 `while` 和 `scanf` 实现连续读取
下面是一个具体的例子,展示如何通过 `while` 循环和 `scanf` 来不断接收用户输入的一系列整数,并计算这些整数的数量以及它们的总和:
```c
#include <stdio.h>
int main(void){
int number;
long sum = 0L; /* 存储所有输入整数之和 */
int count = 0; /* 记录已读入的有效整数个数 */
printf("请输入一系列整数(以非整数或Ctrl+D/Ctrl+Z终止):\n");
while (scanf("%d", &number) == 1){/* 当成功解析到一个有效的整数时进入循环体 */
++count;/* 更新计数器 */
sum += number;/* 累加当前读取的整数值 */
}
if(count > 0){
printf("\n总共读取了%d个整数。\n", count);
printf("这些整数相加之和为%ld。\n", sum);
}
else{
puts("未接收到任何有效整数!");
}
return 0;
}
```
上述程序会在每次调用 `scanf` 成功获取一个整型参数后增加计数并累加该值至变量 `sum` 中。一旦到达文件末尾或是遇到了无法转换成整数的内容(比如字母),则停止读取操作[^2]。
当 `scanf` 遇到了不符合预期格式的数据或者是达到了文件流的末端时,它将会返回不同于期望项数的结果,此时条件判断失败从而退出循环[^3]。
#### 处理潜在问题
需要注意的是,在某些情况下可能需要清理标准输入缓冲区中的残留字符,特别是当使用逗号分隔或者其他特殊格式化字符串作为输入提示的时候。然而对于简单的整数列表而言通常不需要额外的操作。
另外,由于本例程依赖于用户的主动中断行为(如按下 Ctrl-D 或者 Ctrl-Z),因此建议提供清晰的指令说明给使用者以便他们知道怎样去触发这个动作[^4]。
阅读全文
相关推荐

















