C语言程序中使用了EOF怎么读不到呢?

下面我写的这段程序想实验一下EOF的用法,利用重定向读入文件中的内容,去除多余的空格符号然后打印出来,但是为什么会陷入死循环始终无法结束呢?高手请指教!
#include <stdio.h>
int main(char argc, char *argv[])
{
char before = '\0';
char now;
now = getchar();
while(now != EOF)
{
if (before != ' ')
{
putchar(now);
before = now;
}
else if (before = ' ' && now != ' ')
{
putchar(now);
before = now;
}
else
{
before = now;
}
now = getchar();
}
printf("\n");
return 0;
}

大哥 能容许我帮你写吗?
int main(char argc, char *argv[])
{
char before;
char now;
now = getchar();
before=now;
while(now != EOF)
{
now=getchar();
if(before!=' ')
putchar(before);
if(before==' '&&now!=' ')
putchar(' ');
before=now;

}
}

有连续多个空格的只输出一个空格
温馨提示:答案为网友推荐,仅供参考
第1个回答  2009-05-22
EOF是读取文件结束的标示符,而不是输入结束的,如果你是输入回车(\n)结束的话可以用 now!='\n' 哦
第2个回答  2009-05-22
这个只有在文件里能用,要是你用文件引用的话,就可以用了,你可以把你要输入的值写在一个文件里,然后在dos里用这个文件,这样eof可以有用了就
第3个回答  2009-05-22
因为EOF在stdio.h中定义为-1
而你的Now是字符型,getchar()从键盘获取字符赋值给now
字符不可能出现-1呀

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网