C语言读取文件数据并存储到链表中 - int readFile(Node *worker) 函数解析
这段代码实现了一个名为 int readFile(Node *worker) 的函数,用于读取名为 '职工资料.txt' 的文件,并将文件中的数据存储到一个链表中。具体实现过程如下:
-
定义变量:首先定义了三个指针变量:
Node *p和Node *r用于链表操作,分别指向当前节点和尾节点。FILE *fp用于打开文件。
-
打开文件:使用
fopen("职工资料.txt", "rt")打开名为 '职工资料.txt' 的文件,以只读文本模式打开。 -
读取数据:
- 动态分配一个
Node结构体的内存,存储读取到的数据:p = (Node *)malloc(sizeof(Node)); - 使用
fscanf函数从文件中读取数据,并将数据存储到p指向的Node结构体中:fscanf(fp, "%s%s%s%s%s%s%s%s%s%s%s", p->worker.num, p->worker.namep, p->worker.name, p->worker.sex, p->worker.birthday, p->worker.workday, p->worker.edu, p->worker.job, p->worker.addr, p->worker.phone, p->worker.salary);
- 动态分配一个
-
错误处理:判断文件指针
fp是否为空,如果为空表示打开文件失败,输出提示信息:printf("文件打开失败"); -
循环读取数据:使用
while循环判断文件是否已经读取到末尾(feof(fp)用于判断文件指针是否已经指向文件末尾)。- 将
p指向的Node结构体插入到链表中:r->next = p;将当前尾节点的next指针指向新节点p。r = p;更新尾节点指针r为新节点p。r->next = NULL;将新尾节点的next指针置为NULL。
- 再次动态分配一个
Node结构体的内存,用于存储下一次从文件中读取到的数据:p = (Node *)malloc(sizeof(Node)); - 使用
fscanf函数从文件中读取数据,并将数据存储到p指向的Node结构体中。
- 将
-
关闭文件:循环结束后,使用
fclose(fp)关闭文件。
总结:这段代码的作用是读取一个文件中的数据,并将数据存储到链表中。它演示了 C 语言中的文件操作、内存分配、链表操作等基本编程技巧。
原文地址: https://www.cveoy.top/t/topic/pioJ 著作权归作者所有。请勿转载和采集!