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

众所周知,EOF 字符可以通过ctrl-z.

我运行了两次程序:-

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

2-当我输入ctrl-z一些其他文本(如demo然后按ctrl-z)时,循环不会终止。

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

4

1 回答 1

2

EOF不是可以放入流中的字符。它是一个元控制字符,可以通过返回getc,但不能写入。ctrl-z技术上不发送EOF,它发送SIGTSTP到进程并被getc编程为通过返回来响应它EOF

于 2014-03-26T17:21:12.540 回答