2016-09-05 9 views
2

ファイルから行を読み込み、行を印刷しようとしています。しかし、コードを実行すると、中央から始まる行が印刷され始めます。C - ファイルから行を読み取る

char temp[300]; 

if (input == NULL) { 
    printf("Can't open input file.\n"); 
    exit(-1); 
} 

while (!feof(input)) { 
    fgets(temp, 300, input); 
    printf("%s \n", temp); 
} 
fclose(input); 

途中で起動する理由は何ですか?

編集:だから、私は途中で何を意味するかの例は、私がこの

7,12 Angry Men,1957 
95,2001: A Space Odyssey,1968 
211,8 and a Half,1963 
190,A Beautiful Mind,2001 
68,A Clockwork Orange,1971 
223,A Fistful of Dollars,1964 
108,A Separation,2011 
233,A Streetcar Named Desire,1951 
40,Alien,1979 
58,Aliens,1986 
96,All About Eve,1950 
224,All Quiet on the Western Front,1930 
250,All the President's Men,1976 
91,Amadeus,1984 
69,Amelie,2001 
54,American Beauty,1999 
33,American History X,1998 
189,Amores Perros,2000 

のようなリストを持っていると私はprintfのを取得する場合、それはこれだけ

58,Aliens,1986 
96,All About Eve,1950 
224,All Quiet on the Western Front,1930 
250,All the President's Men,1976 
91,Amadeus,1984 
69,Amelie,2001 
54,American Beauty,1999 
33,American History X,1998 
189,Amores Perros,2000 

EDIT2を示すことです:プログラムで\ nを取り除くためにプログラムを変更しました

while (fgets(temp, sizeof(temp), input) != NULL) { 
     printf("%s", temp); 
    } 

これが問題を解決しました。 \ nがこの問題を引き起こした理由はありますか?

+0

次の実験を行います。プログラムの出力をファイルにパイプします。このファイルを(良い!)プレーンテキストエディタで見てください。そこにすべてのラインはありますか? – usr2564301

+0

メモ帳でファイルを開いて、自分の結果と比較しました。これは、リストの欠落した項目に気づいた方法です。 –

+0

よくできました! (私が尋ねた理由は、「目に見えない」とは、画面上で上書きされたことを意味していた可能性があります*迷いのあるキャリッジリターンのためです)。 – usr2564301

答えて

3

Why is “while (!feof (file))” always wrong?

fgetsに見てくださいは十分です。また

while (fgets(temp, 300, input) != NULL) { 
    printf("%s \n", temp); 
} 

、それが出て印刷を開始

while (fgets(temp, sizeof temp, input) != NULL) { 
    printf("%s \n", temp); 
} 

300、変更のようなマジックナンバーを使用していません途中から始まる行

fgetsには末尾改行'\n'が含まれており、printfに含める必要はありません。これは「中間」ですか?

+0

ありがとう!しかし、私はまだファイルから全リストを取得していません。それはまだ中間で始まります。だから、もしリストがリンゴ、バナナ、ブドウ、パイナップル、キウイであったならば、プログラムはブドウ、パイナップル、キウイだけを出力する –

+0

それは本当に奇妙なことだ、あなたはあなたのファイルの古いバージョンを使用していないことは確かですか? –

+0

いいえ、私は保存してみましたが、再開しても同じ結果が得られました。 –

関連する問題