首先输入文本行时,未检测到EOF字符?

时间:2014-03-26 17:17:06

标签: c input eof getc

char ch;
while((ch=getc(stdin))!=EOF)
{
    putc(ch,stdout);
}

我们知道可以通过ctrl-z输入EOF字符。

我运行了两次程序: -

1-当我输入ctrl-z时,循环终止,这是可以接受的。

2-当我输入ctrl-z以及demo之类的其他文字然后按ctrl-z时,循环不会被终止。

所以我的问题是,为什么仅通过单独输入ctrl-z来终止循环?

1 个答案:

答案 0 :(得分:2)

EOF 您可以放入流中的字符。它是一个元控制字符,可由getc返回,但无法写入。 ctrl-z在技术上不会发送EOF,它会向流程发送SIGTSTPgetc会被编程为通过返回EOF来回复它。