为什么C程序传入EOF之后,后面的所有输入都会变为EOF?

#include <stdio.h>

#define SIZE 40

int main(void)
{
    char * ptr;
    char string[SIZE];
    char ch;

    ch = getchar();
    if (ch == EOF)
        puts("Enter EOF");

    ptr = fgets(string, SIZE, stdin);
    if (ptr == NULL)
        puts("The fgets functions back the null");

    return 0;
}

我在使用gcc来编译之后结果是这个样子的

输入EOF之后

运行结果

 

你怎么输入 EOF 的?

应该是(ch=getchar())==EOF

我是macos系统的CLion中是commad+D,在终端gcc编译是control+D@SoftwareTeacher

你这个和我这个有什么区别吗?@黑鲸先生

是macOS的锅,windows下就不会这样子