2016-11-21 16 views
0

私はC言語が新しく、データを.csvに保存し、同じデータを非常に簡単なプログラムで読み込もうとしています。C wierd出力でのCSVファイルの書き込みと読み込み

char c; 

    FILE *fp; 
    fp = fopen("file.csv", "w+"); 
    fprintf(fp, "Hello;World\nLine"); 
    fclose(fp); 
    fp = fopen("file.csv", "r"); 
    while (getc(fp) != EOF) { 
     printf("%c", getc(fp)); 
    } 

    fclose(fp); 

出力が間違っている理由を私は知らない:事前

+1

'getc(fp)!= EOF':入力文字を破棄します。 – BLUEPIXY

答えて

5

el;ol 
ie 

感謝をあなたがループ状態で文字を読んでいるので(それは他のすべてのものを出力しますので、印刷時に別の印刷物を読み取る)。ここで

int ch; 
while ((ch=getc(fp)) != EOF) { 
    printf("%c", ch); 
} 
+0

ああもちろん! –

+0

EOFと比較するには、 'char ch;'の代わりに 'int ch;'を使います。 – BLUEPIXY

3

:これを試してみてください

while (getc(fp) != EOF) { 
    printf("%c", getc(fp)); 
} 

あなたはループを通るたびに二回getc()を呼び出して、一つだけの文字を印刷しています。だからあなたは半分以上の時間を得ることができます。

関連する問題