|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
//打开文件
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函数那句话啥意思,看不懂
本帖最后由 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 循环入口,这也是 "先读取,再判断"
- }
复制代码
|
|