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);

    我们来看看运行结果:

    好了,问题解决了。

  • 相关阅读:
    读入输出优化
    码表
    windows下bat批处理实现守护进程(有日志)
    cmd批处理常用符号详解
    批处理之 for/f 详解
    WINDOWS XP中用命令行管理用户 net user命令
    VacmMIB
    工作遇到
    snmp之GenericAddress
    snmp4j 之 ArgumentParser
  • 原文地址:https://www.cnblogs.com/M-Anonymous/p/9291002.html
Copyright © 2011-2022 走看看