2017-02-17 9 views
-1
#include <stdio.h> 

int main(){ 
    int c, nl=0; 

    while((c = getchar()) != EOF) 
     if(c=='\n') 
      nl++; 

    printf("%d",nl+1); 
    return 0; 
} 

K & R ansi c、セクション1.5.3: 行カウントプログラムはclionで正確に複製されます。私はMingw64を使用しています。 EOFと比較した場合、コンソールに出力はありません。getchar()それは他の文字とうまく動作します。 CTRL^Dを使用すると、コンソール上に出力されずに 'code 0'のプログラムが終了します。私はbashで実行しようとしましたが、出力はありません。非常に長い時間、このままで立ち往生してください。ctrl^Dの後にコンソールに出力がありません。

入力:多分

,,,のような複数行

いくつか刺さ

..

4行。

予想される出力:

実際の出力:

(何も) EDIT-1:私は私がすべてのプログラムでこの問題を持って発見しましたどこかでEOF比較を使用してください。これらのプログラムはコンソールから実行されることになっていますか、またはファイルからの入力が与えられていますか? * nixのシステムで

+0

コード、入出力、予想出力を表示してください。 –

+0

これまでの調査/デバッグの取り組みを示してください。まず[Ask]ページをお読みください。 –

+0

_デバッグヘルプを検索する質問(「なぜこのコードは動作しませんか?」)には、目的の動作、特定の問題またはエラー、および質問自体に再現するのに必要な最短コードが含まれている必要があります。明確な問題文がない質問は、他の読者にとって有用ではありません。参照:最小限で完全かつ検証可能なサンプルを作成する方法。 –

答えて

0

WindowsシステムEOFCtrl^Zによって生成されるのに対し、EOFCtrl^Dによって生成されます。私はあなたがWindowsシステムを使用していると仮定しています。 https://en.wikipedia.org/wiki/End-of-file

0

これらのプログラムは、ファイルから入力を読み取るためのものです。これはbashでこれを行う場合: ./linecount < textfile.txt はあなたに出力 5 を与えるだろうが、私は/トリガEOF文字がうまく動作しない生成するctrl^Dを使用して編集者に推測(少なくとも私の上)。

関連する問題