【发布时间】:2014-11-28 07:29:34
【问题描述】:
我正在运行C Programming Language 书中的以下程序:
#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'} 时,我会在屏幕上打印以下响应:hello,但程序并没有退出。一旦我输入^D,它不应该退出吗?我必须再次输入^D 才能退出程序。或者程序仅在我在\n 之后输入^D 后退出。我不明白为什么无论我输入^D,程序都不会退出。有什么想法吗?
我在 UNIX 系统上运行。
【问题讨论】: