2012-07-19 16 views
0

我是新来的c和ubuntu。我写了一个非常简单的程序来计算使用while和getchar()的字符数量。该程序是:无法打印,没有使用getchar的字符,在ubuntu中

#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。我按下回车键,但显示计数。什么地方出了错?它是无限循环吗? get键()在键盘输入时如何确定EOF?

+0

计数*为*显示或计数*未显示?输入完文字后,尝试输入Control-D。 – 2012-07-19 19:22:32

回答

1

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

echo "blablub" | ./yourprogram 

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

1

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

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