C语言关于while (scanf("%d", &m) != EOF)的疑问?
发布网友
发布时间:2024-05-04 03:42
我来回答
共2个回答
热心网友
时间:2024-12-14 12:37
这得看scanf的定义:
int scanf(const char *format, ...)
返回值:如果成功,该函数返回成功匹配和赋值的个数。如果到达文件末尾或发生读错误,则返回 EOF
所以,如果你在终端上输入数据,而不是从文件,那么基本上不会发生读错误,也就无从读取到EOF了。
如果你是在windows系统上执行此程序,偿试输入:Ctrl+Z,这是微软系统上输入EOF的方法。
或者,改为由文件输入数据。
另外,你用了getchar();也要注意输入缓冲区的问题。因为windows(或说DOS)系统上,输入一个回车,实际上是输入的0Dh ,0AH两个字符,这就导致,一个回车执行了2次循环,所以,在执行一次getchar()之后,执行一下清除缓冲区的操作
热心网友
时间:2024-12-14 12:37
应该是运行环境问题
因为while 1 的写法,很容易被识别为一个死循环。然后环境会加以*,防止长时间运行。