首页 > 循环((ch=getchar())!=EOF)结束后,下一个ch2=getchar()为什么不工作?

循环((ch=getchar())!=EOF)结束后,下一个ch2=getchar()为什么不工作?

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

为什么在win下,输入Ctrl+Z,会等待ch2的getchar()输入,而Mac下,ch2的getchar()直接跳过,而且ch2的值总是-1(EOF)?


你需要查明快捷键的作用,并不是所有系统都是Ctrl+Z作为EOF文件结束符号的。
很多类Unix操作系统都是用Ctrl+Z作为挂起进程,Ctrl+D作为EOF文件结束符的。

我的Linux目前就是用Ctrl+D能和Windows Ctrl+Z作用一样,而ctrl+z进程直接强行终止了。因为MacOS也是基于类Unix系统,和Linux相似的可能性很高。

【热门文章】
【热门文章】