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

mdj*_*kan 3 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
    }
}
Run Code Online (Sandbox Code Playgroud)

这里会发生什么?

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

kay*_*lum 7

您需要调用clearerrstdin清除EOF。另请注意,getchar返回 anint而不是 a,char因为EOF不适合 char。