我是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?
答案 0 :(得分:1)
在终端上,您可以按Ctrl + D将EOF发送到应用程序。你也可以这样做:
echo "blablub" | ./yourprogram
计算blablub中有多少个角色。在这种情况下,EOF会自动发送。
答案 1 :(得分:1)
按Enter键会向程序发送换行符,而不是EOF。正如其他人已经提到的那样,使用Ctrl + D发送EOF。如果您想停止读取换行符上的字符,请将while循环更改为:
while ( ( i = getchar() ) != '\n' ){
c++ ;
}