我正在运行C 编程语言书中的以下程序:
#include <stdio.h>
main()
{
int c;
while((c=getchar()) != EOF)
putchar();
}
或者
#include<stdio.h>
int main(){
int c = getchar();
while(c != EOF){
putchar(c);
c = getchar();
}
}
当我运行这个程序时,我得到一个无法解释的行为。如果我按以下顺序从命令行输入字符:{'h', 'e', 'l', 'l', 'o', '\n', '^D'}
那么我会在屏幕上打印以下响应:输入hello
之后\n
,程序^D
在输入后退出。
但是,当我按如下方式更改顺序时:{'h', 'e', 'l', 'l', 'o', '^D'}
然后我得到以下响应打印到 screen: hello
,但程序没有退出。一旦我进入,它不应该退出^D
吗?我必须^D
第二次进入程序才能退出。或者程序只有在我输入^D
以下内容后才会退出\n
。我不明白为什么无论我什么时候进入程序都不会退出^D
。有什么想法吗?
我在 UNIX 系统上运行。