【发布时间】:2014-09-27 09:48:09
【问题描述】:
我开始学习 EOF 并编写了以下简单程序:
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
void main()
{
int i=0;
while(getchar()!=EOF)
{
i++;
}
printf("number of characters : %d \n",i);
}
问题是,当我写一个字符串时,按回车,然后按Ctrl+Z,输出是我写的字符数加 1(对于EOF)。但是,如果我写一个字符串并且不换行,按Ctrl+Z,while 循环不会终止。这是为什么呢?
【问题讨论】:
-
添加了 Windows,因为我从您使用
Ctrl+Z获取 EOF 那是您的平台。顺便说一句,main应该返回int,而不是void,如果您关心可移植代码。 -
@larsmans 首先我想我必须知道它是如何工作的,然后我会开始担心可移植代码..!
-
是的 paxdiablo 说,如果我按任意位置 Ctrl+Z 和换行符,我会完成我的工作,但我已经完成了,程序继续,“while”不会停止。跨度>