1

次のcコードがあります。CTRL+を押すとD、プログラムはそれを EOF として認識しません。

いくつかのメモ:

VMware プレーヤーで Ubuntu 11.10 を実行しています gcc を使用し、コマンド ラインからプログラムを実行しています 「stty -a」は eof = ^D を示します

助けてくれてありがとう..

1 #include <stdio.h>
  2 
  3 int main()
  4 {
  5    int c, nl;
  6    nl = 0;
  7    while ((c != getchar()) != EOF)
  8    {
  9       if (c == '\n')
 10          ++nl;
 11    }
 12    printf("line: %d\n", nl);
 13 
 14    return 0;
 15 }
4

3 に答える 3

6

試す

 while ((c = getchar()) != EOF)

(c != getchar())それ以外の場合は、 の結果をと比較していEOFます。

于 2012-04-07T02:01:37.910 に答える
5
while ((c != getchar()) != EOF)

これは、不等式intの変数c(初期化していない)の値と によって返される値を比較します。この比較では 0 または 1 が返されますが、これは負の と同じにすることはできません。getchar()EOF

!=(不等式比較)を=(代入)に置き換えたい。

于 2012-04-07T02:01:52.153 に答える
3

while ((c != getchar()) != EOF)

する必要があります

while ((c = getchar()) != EOF)

于 2012-04-07T02:01:44.807 に答える