为什么getchar()不能正常工作?

时间:2012-01-01 14:17:35

标签: c cygwin

今天,我编写了一段简单的代码,使用getchar()来计算您输入的字符数。但是当我在Cygwin上编译它时,它不起作用。它总是打印0,但我从不输入任何东西,或者我无法输入它打印的任何字符。

但是,如果我使用VC ++ 6.0编译它,它可以工作。

#include<stdio.h>
int main(void)
{
 long nc;

 nc = 0;
 while(getchar() != EOF)
    ++nc;
 printf("The total of characters you inputed is %ld.\n", nc);
 return 0;
}

1 个答案:

答案 0 :(得分:0)

This email thread谈到一个听起来和你很相似的错误,但我看不出它有任何跟进。

我很想知道你尝试时发生了什么

while(getc(stdin) != EOF)

如果这不起作用,请尝试 while(fgetc(stdin) != EOF)

所有这些都应该,但this页面表明这些功能之间可能存在实施差异。

你可以尝试的另一件事是打印你得到的ASCII值:

printf("%d\n",(int)getchar());

另外,尝试从文件输出管道输出,而不是在控制台中输入。创建一个文件input.txt,在其中放入一些字符,然后执行

cat input.txt | ./program

编辑:你写的是跑猫和管道它的工作原理。我只想更新你的Cygwin版本。你遇到过一个bug。获取最新版本的Cygwin和编译器,你应该很高兴。另一种选择是使用scanf