char ch;
while((ch=getc(stdin))!=EOF)
{
putc(ch,stdout);
}
我们知道可以通过ctrl-z
输入EOF字符。
我运行了两次程序: -
1-当我输入ctrl-z
时,循环终止,这是可以接受的。
2-当我输入ctrl-z
以及demo
之类的其他文字然后按ctrl-z
时,循环不会被终止。
所以我的问题是,为什么仅通过单独输入ctrl-z
来终止循环?
答案 0 :(得分:2)
EOF
不您可以放入流中的字符。它是一个元控制字符,可由getc
返回,但无法写入。 ctrl-z
在技术上不会发送EOF
,它会向流程发送SIGTSTP
,getc
会被编程为通过返回EOF
来回复它。