char ch;
while((ch=getc(stdin))!=EOF)
{
putc(ch,stdout);
}
我們知道EOF字符可以通過ctrl-z
輸入。首先輸入文本行時未檢測到EOF字符?
我跑的程序兩次: -
1-當我輸入ctrl-z
,循環被終止,這是可以接受的。
2-當我輸入ctrl-z
以及其他一些文本如demo
,然後按ctrl-z
,則循環不會終止。
所以我的問題是,爲什麼循環只通過輸入ctrl-z
單獨終止?
char ch;
while((ch=getc(stdin))!=EOF)
{
putc(ch,stdout);
}
我們知道EOF字符可以通過ctrl-z
輸入。首先輸入文本行時未檢測到EOF字符?
我跑的程序兩次: -
1-當我輸入ctrl-z
,循環被終止,這是可以接受的。
2-當我輸入ctrl-z
以及其他一些文本如demo
,然後按ctrl-z
,則循環不會終止。
所以我的問題是,爲什麼循環只通過輸入ctrl-z
單獨終止?
EOF
是不是可以放入流中的字符。這是一個元控制字符,可以由getc
返回,但不能寫入。 ctrl-z
在技術上沒有發送EOF
,它將SIGTSTP
發送到過程並且getc
被編程爲通過返回EOF
來響應它。
我同意它,但爲什麼這不會發生在第二種情況 –
您是否實際輸入'demo',然後按'ctrl-z'或輸入'^ z'?後者不適用於大多數終端。 –
我輸入'demo',然後按'ctrl-z' –
正在使用哪個終端/外殼? – user2864740
@ user2864740:這是什麼意思? –
即xterm/bash?在Windows/cmd.exe的? – user2864740