码迷,mamicode.com
首页 > 其他好文 > 详细

feof() 函数判断不准确的问题

时间:2018-07-10 20:09:07      阅读:167      评论:0      收藏:0      [点我收藏+]

标签:问题   txt   alt   fopen   .com   color   pre   问题解决   open   

大家在读文件时应该碰到过这样的问题,while(!feof(fp)) 函数在读文件时会多循环一次,导致 fscanf() 函数多读了一次文件。

所以也就在输出的时候会产生一些乱码。

可以看看下面的代码:

#include<stdio.h>

int main(void)

{

    FILE *fp;

    char str0[10],str1[10];

    fp=fopen("C:\\Users\\Public\\Documents\\data1.txt","r");

    while(!feof(fp))

    {

        fscanf(fp,"%s %s",str0,str1);

        printf("%s\n%s\n",str0,str1);

        fgetc(fp);

    }

    return 0;

}

文档里的内容如下:

技术分享图片

运行后可以看到:

技术分享图片

循环确实是多循环了一次。

 

此时调整一下代码:

#include<stdio.h>

int main(void)

{

    FILE *fp;

    char str0[10],str1[10];

    fp=fopen("C:\\Users\\Public\\Documents\\data1.txt","r");

    while(!feof(fp))

    {

        fscanf(fp,"%s %s\n",str0,str1);

        printf("%s\n%s\n",str0,str1);

        fgetc(fp);

    }

    return 0;

}

看似没有什么变化是不是?

其实是在这里改了一下: fscanf(fp,"%s %s\n",str0,str1);

我们来看看运行结果:

技术分享图片

好了,问题解决了。

feof() 函数判断不准确的问题

标签:问题   txt   alt   fopen   .com   color   pre   问题解决   open   

原文地址:https://www.cnblogs.com/M-Anonymous/p/9291002.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!