2011-02-18 76 views
3

我的程序正在從infile中讀取最後一行數據兩次。當我執行程序時,最後一行數據正在打印兩次。請幫幫我!這裏是代碼,在c中讀取文件的結尾

while (!feof (in)) { 
//fread(); 
} 

我希望這是因爲feof功能。我不想使用fgetsgetline。有沒有其他的方法?請指導我。

感謝所有迴應我的人!我爲此得到了解決方案!我在do環路中用fgetcunfgetc

下面是代碼:

int ch; 
ch=fgetc(fp); 
do 
{ 
ungetc(ch,fp); 
//fread(); 

ch=fgetc(fp); 
} while((ch = fgetc(fp)) != EOF && ch != '\n'); 
+1

你用什麼函數從文件中讀取? – karlphillip 2011-02-18 18:30:47

+2

代碼在哪裏? – 2011-02-18 18:30:48

+1

你能從代碼中添加更多行嗎? – 2011-02-18 18:30:52

回答

6

你所面臨的問題,這post會談。

1

您必須使用do ... while循環才能在c中正確使用feof()

if (!feof()) // in case the file is zero length. 
{ 
    do 
    { 
     //whatever....   
    } while(!feof()) 
} 
1

試試這個!使用fscanf進行輸入操作。

while(fscanf(stdin, "%s", in) != EOF) { 
//your code 
}