scanf等于eof
时间: 2025-04-17 08:39:25 浏览: 27
### 如何判断 `scanf` 是否遇到 EOF
在 C 语言中,`scanf` 函数用于从标准输入流读取数据。该函数会返回成功赋值的项目数量,如果到达文件结尾(EOF),则返回 `EOF` 或者负数。
对于单个参数的情况,可以利用这一特性来检测是否遇到了 EOF:
```c
#include <stdio.h>
int main() {
int n;
while (scanf("%d", &n) != EOF) {
// 处理输入的数据
printf("Read number: %d\n", n);
}
return 0;
}
```
上述代码展示了如何通过比较 `scanf` 的返回值与 `EOF` 来控制循环[^1]。当没有更多输入可供处理时,`scanf` 将返回 `EOF` 并退出循环。
另一种常见的写法是使用位运算符 `~` 进行简化表达:
```c
while (~scanf("%d", &n)) {
// 处理输入的数据
printf("Read number: %d\n", n);
}
```
这里 `~` 符号的作用是对整数值按位取反,在大多数情况下这相当于将非负数转换成真(true),而把 `-1`(即 `EOF`) 转换成假(false)。
此外,也可以直接用 `!= EOF` 判断多个变量的同时输入情况:
```c
int a, b;
while (scanf("%d %d", &a, &b) != EOF) {
// 当两个整数都能被正常读入时执行这里的逻辑
printf("Numbers read: %d and %d\n", a, b);
}
```
这种方式适用于需要连续读取多组数据直到遇到文件结束标志的情形[^4]。
阅读全文
相关推荐




















