Windows环境下C程序CMD输出中→符号含义及程序阻塞问题咨询
解答:Windows控制台中→符号的含义
你编写的将空格替换为换行的C程序代码如下:
#include <stdio.h> int main() { int c; while( (c = getchar()) != EOF) { if( c != ' ') putchar(c); else putchar('\n'); } }
你输入Hello World^Z后看到的→符号,是Windows命令提示符(CMD)的光标指示符,它表示当前控制台正处于等待输入的状态——你的程序还没收到EOF信号,所以一直在循环等待更多输入。
这是因为Windows系统中,getchar()识别EOF的规则有要求:
- 输入的
^Z(即Ctrl+Z)需要是该行的第一个字符,或者在输入^Z之后按下回车键,系统才会将其作为EOF信号发送给程序。 - 你直接在
Hello World末尾输入^Z却未按回车,系统不会触发EOF,程序自然会继续等待输入,控制台也就显示这个光标→提示你可以继续输入内容。
如果要让程序正常结束,你可以在输入Hello World后按下回车,再输入^Z;或者直接在新的一行输入^Z,这样程序就能接收到EOF并退出循环。
内容的提问来源于stack exchange,提问作者Rodion Iskhakov
相关产品推荐
相关产品推荐

