0

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

4

2 回答 2

1

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

while ( ( i = getchar() ) != '\n' ){
c++ ;
}
于 2012-11-28T17:45:09.150 回答
1

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

echo "blablub" | ./yourprogram

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

于 2012-07-20T16:09:17.527 回答