feof问题
//打开文件void open(struct student *h)
{
struct student *p=h;
struct student *q;//临时变量,用于保存从文件中提取的信息
FILE*file=fopen("./Information.txt","rb");
if(!file)
{
printf("文件打开失败!");
return ;
}
/*使用feof判断文件是否为结束时要注意的问题:
当读取文件结束时,feof函数不会理解设置标识符为-1,而是
需要再读取一次,才会设置。所以要先读一次。
*/
q=(struct student*)malloc(LEN);
fread(q,LEN,1,file);
while(!feof(file))//一直读到文件末尾
{
p->next=q;
p=q;
q=(struct student*)malloc(LEN);
fread(q,LEN,1,file);
}//while循环结束
p->next=NULL;
fclose(file);
}
谁来帮我解释下中间关于feof函数那句话啥意思,看不懂{:10_254:} 字面意思呗 还能啥意思???不先读一次上哪去取文件指针 本帖最后由 jackz007 于 2020-12-15 11:09 编辑
q=(struct student*)malloc(LEN);
fread(q,LEN,1,file); // 进入循环前,先读取一个节点
while(!feof(file)) // 判断是否到达文件结尾,如果没有就进入或继续循环,否则,就绕过或结束循环
{
// 代码执行到这里,说明没有到达文件结尾,本次读取的节点数据有效
p->next=q; // 更新链表数据,把新的节点纳入链表
p=q; // 更新链表数据,把新的节点纳入链表
q=(struct student*)malloc(LEN);// 分配内存,准备读取下一个节点
fread(q,LEN,1,file); // 读取下一个节点,执行完此句,会返回到 while 循环入口,这也是 "先读取,再判断"
}
页:
[1]