2011-02-18 73 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 
}