C语言中文件读取结束

4

我的程序从infile中读取最后一行数据时会读取两次。当我执行程序时,最后一行数据会被打印两次。请帮帮我!这是代码:

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
1
你能添加更多代码行吗? - Vivek Goel
嗨Vivek,我正在使用fread来读取数据。 - jcrshankar
2个回答

1

在C语言中,你必须使用do...while循环来正确使用feof()

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

我尝试使用'do',但它仍然会读取最后一个数据块两次。 - Michael IV

1
尝试一下!使用 fscanf 进行输入操作。
while(fscanf(stdin, "%s", in) != EOF) {
//your code
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接