2016-11-21 2198 views
0

我是C語言的新手,我試圖將數據保存爲.csv並在一個非常簡單的程序中讀取相同的數據。在C語言輸出中寫入和讀取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); 

我不知道爲什麼輸出是錯誤的:

el;ol 
ie 

在此先感謝

+1

'getc(fp)!= EOF':在輸入字符中丟棄。 – BLUEPIXY

回答

5

因爲你正在閱讀的字符在循環條件(所以它打印出每隔一個當打印時),並在打印出時讀取另一個。試試這個:

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

哦,當然!感謝您指出這一點 –

+0

與EOF比較,'int ch;'而不是'char ch;' – BLUEPIXY

3

這裏:

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

您通過循環每次打電話getc()兩次,但只打印一個字符。所以你得到了半個月的時間。