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