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