C语言判断文件指针是否结尾的问题

c语言的文件指针结尾问题:有两个方法可以判断文件指针是否到结尾
pay attention:读取文件的函数会影响文件指针移动
  1.使用feof(文件指针)函数判断,如果到了结尾返回0,否则返回非0
  2.使用EOF(就是-1)判断指针是否到结尾 仅用于普通文件,不适用于二进制文件
适用条件--------重点
  方法1:
  *1.有一个弊端就是,feof函数判断文件指针是否到结尾,假设已经到结尾了,还要再读取一次数据进行判断,也就是说feof用来判断文件指针是否
    到文件结尾是,会多读一次数据。(为什莫会这样,因为这是头文件stdio.h的定义问题)
  *2.解决办法:可以先在循环外,读一次数据,这样在循环就能得到正常的读取次数了
  eg:
  typedef struct node{ //这是一个学生信息的结点
    char name[20];
    char num[20];
    char sex[20];
    int age;
  }Student;
  //主函数中
  int main(){
    FILE *fp;  
    Student stu;
    if((fp=fopen("E:\\a.txt","rb+")!=NULL){
      fscanf(fp,"%s%s%s%d",stu->name,stu->num,stu->sex,&stu->age);
      while(!feof(fp)){
        cout<<stu-name<<endl; //输出所有文件中的学生姓名
        fscanf(fp,"%s%s%s%d",stu->name,stu-num,stu->sex,&stu->age);
      }
    }
  }

reference:

http://www.mamicode.com/info-detail-233424.html

https://www.cnblogs.com/dayongge/p/14294881.html

https://blog.csdn.net/bingqing07/article/details/5785080/

fscanf(fp,"%s%s%s%d",stu->name,stu-num,stu->sex,&stu->age);
上一篇:Win7系统安装JDK后javac不是内部或外部命令解决办法


下一篇:delphi7编译程序报内存错误闪退