2016-11-21 2192 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()两次,但只打印一个字符。所以你得到了半个月的时间。