发送 EOF 后无法读取任何内容?

标签 c infinite-loop eof getchar

#include <stdio.h>
int main()
{
    char c = getchar(); //EOF (ctrl + d )
    while( ( c = getchar() ) != '?' )
    {
        printf( "%d\n", c == EOF );//infinite loop printing 1
    }
}

这里发生了什么?

就好像 EOF 完全阻止读取它之后的任何内容?

最佳答案

您需要调用clearerrstdin 上清除 EOF。另外,请注意 getchar 返回一个 int 而不是 char 因为 EOF 不适合 char。

关于发送 EOF 后无法读取任何内容?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70374743/

相关文章:

java - 如何使用 Scanner 类中的 hasNext()?

c - 打印在两边最多 float 四个位置

iphone - Objective-c 调用 C 函数

c - C中的静态局部变量是什么意思?

c - 循环永不停止

c - 了解 EOF

c - 内存分配如何在操作系统的最低级别发生?

c - 为什么会有无限循环?

Python - 用户输入以确定 while 循环中的条件

C++ 从 cin 读取输入,直到读取整行