zoukankan      html  css  js  c++  java
  • feof() 函数判断不准确的问题

    大家在读文件时应该碰到过这样的问题,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 %s ",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 ",str0,str1); printf("%s %s ",str0,str1); fgetc(fp); } return 0; }

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

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

    我们来看看运行结果:

    好了,问题解决了。

  • 相关阅读:
    屏幕取色器colorspy
    js监控按键
    修改硬件信息小工具
    C#SendKeys的用法
    错误分析:程序集未标记为可序列化
    C#xml反序列化
    office2010激活工具
    截图软件
    C#画图
    .net中SQL防注入代码
  • 原文地址:https://www.cnblogs.com/M-Anonymous/p/9291002.html
Copyright © 2011-2022 走看看