这代码里面哪出现了问题吗

为什么运行输入了ctrl+z还是会打印eof和它的ascii码值

#include

int main(void) {
    char ch;
    int t = 0;
    while ((ch = getchar()) != EOF) {
        putchar(ch);
        t++; 
        putchar('\n');
        printf("%d\n", ch);
    }
    printf("%d\n", t);
}

img

你得先换行,然后再输入CTRL+Z,再换行才行
你现在CTRL+Z和前两个字符在同一行输入,在你按回车键之前,实际程序scanf还没开始工作呢

这样改,供参考:

#include<stdio.h>
int main(void) {
    char ch;
    int t = 0;
    while ((ch = getchar()) != '\n') {  //while ((ch = getchar()) != EOF)
        putchar(ch);
        t++;
        putchar('\n');
        printf("%d\n", ch);
    }
    printf("%d\n", t);
    return 0;
}