c语言读文件的一段代码,但不明白逻辑

img

以stu为例,想知道为啥要设p1和p2。希望大佬们能完整讲一下这个文件读取的逻辑

这个程序是做了一个链表,stu_head记录表头,stu_p1记录当前的节点数据,stu_p2读取新的数据,然后让stu_p1的next指向stu_p2,也就是当前数据的下一个数据是stu_p2;执行fread()后,stu_p2中就保存了新读取的数据,这时候stu_p2的数据就变成了当前数据,所以下一次循环的时候,让stu_p1=stu_p2;stu_p2重新申请一块内存来继续新读取的数据。这样stu_p1和stu_p2逐渐后移,直到读取完所有的数据。

feof(fp)表示是否读取到了文件的结尾,结尾就会退出循环。每次用fread读取一条记录放到stu_p2里面,每读一次指针就会后移,直到文件结尾循环结束。

stu_head 是一个链表的开头
读完文件之后,通过 stu_head->next可以遍历整个数据
p1,p2的操作是为了把新读的数据挂在之前数据的后面 p1->next=p2;
这样最好才能整个数据组成一个链表。
你去看一下 struct Stu的定义