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

yun*_*eng 9 c cygwin

今天,我编写了一段简单的代码,用于 getchar()计算您输入的字符数.但是当我在Cygwin上编译它时,它不起作用.它总是打印0,但我从不输入任何东西,或者我无法输入它打印的任何字符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;
}
Run Code Online (Sandbox Code Playgroud)

Chr*_*dal 0

此电子邮件主题讨论了一个听起来很像您的错误,但我看不到有任何后续措施。

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

while(getc(stdin) != EOF)

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

所有这些都应该可以工作,尽管本页表明这些函数之间可能存在实现差异。

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

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

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

cat input.txt | ./program

编辑:您编写运行猫并通过管道传输它的工作原理。我想说只需更新您的 Cygwin 版本即可。您遇到了错误。获取最新版本的 Cygwin 和编译器,然后就可以开始了。另一种选择是使用scanf