怎么用while(scanf("%d", &num) != EOF)实现输入a\nb\nc\n,输出abc
时间: 2024-09-12 15:13:32 浏览: 47
当你想要通过`scanf`从标准输入流(通常是键盘)逐行读取整数,并直到遇到文件结束符(EOF)为止,可以使用`while`循环配合`scanf`函数和条件判断。这里的目标是读取到'a'\n'b'\n'c'\n这三个字符序列。以下是实现步骤:
```c
#include <stdio.h>
int main() {
int num;
char input[5]; // 假设最大输入长度不超过4个字符加一个换行符
while (true) { // 使用无限循环,因为我们要持续读入直到遇到EOF
if (scanf("%d", &num) == 1) { // 如果成功读取了一个整数
printf("已读取整数: %d", num); // 打印读取的整数,然后继续读取下一行
continue; // 跳过当前行剩余部分,进入下一轮循环
} else if (fgets(input, sizeof(input), stdin)) { // 如果不是整数,则尝试读取一行文本
// 检查是否是'abc'的前三字节,忽略换行符
if (!strcmp(input, "abc")) {
printf("读到了 'abc':\n");
break; // 当找到"abc"时,跳出循环
}
// 如果不是"abc",则打印输入并继续循环
printf("读到的字符串: %s\n", input);
} else { // 如果无法读取任何内容(EOF),则退出循环
printf("达到文件结束,结束输入。\n");
break;
}
}
return 0;
}
阅读全文