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