在ubuntu中无法打印,没有使用getchar的字符

时间:2012-07-19 19:01:46

标签: c ubuntu getchar

我是c和ubuntu的新手。我写了一个非常简单的程序来计算使用while和getchar()的字符数。该计划是:

#include <stdio.h>

main()  {

int i;
int c= 0;

while ( ( i = getchar() ) != EOF ){
c++ ;
}
printf( "%d characters\n" , c) ;

return 0;
}

我保存并使用gcc c1.c -o c1编译它。没有错误报告。我执行了程序,。/ c1。我把输入作为daniweb。然后按Enter键,但显示计数。什么地方出了错?它是infinte循环吗?当从键盘输入时,getchar()如何确定EOF?

2 个答案:

答案 0 :(得分:1)

在终端上,您可以按Ctrl + D将EOF发送到应用程序。你也可以这样做:

echo "blablub" | ./yourprogram

计算blablub中有多少个角色。在这种情况下,EOF会自动发送。

答案 1 :(得分:1)

按Enter键会向程序发送换行符,而不是EOF。正如其他人已经提到的那样,使用Ctrl + D发送EOF。如果您想停止读取换行符上的字符,请将while循环更改为:

while ( ( i = getchar() ) != '\n' ){
c++ ;
}