这段代码实现了一个名为 int readFile(Node *worker) 的函数,用于读取名为 '职工资料.txt' 的文件,并将文件中的数据存储到一个链表中。具体实现过程如下:

  1. 定义变量:首先定义了三个指针变量:

    • Node *pNode *r 用于链表操作,分别指向当前节点和尾节点。
    • FILE *fp 用于打开文件。
  2. 打开文件:使用 fopen("职工资料.txt", "rt") 打开名为 '职工资料.txt' 的文件,以只读文本模式打开。

  3. 读取数据

    • 动态分配一个 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);
      
  4. 错误处理:判断文件指针 fp 是否为空,如果为空表示打开文件失败,输出提示信息:printf("文件打开失败");

  5. 循环读取数据:使用 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 结构体中。
  6. 关闭文件:循环结束后,使用 fclose(fp) 关闭文件。

总结:这段代码的作用是读取一个文件中的数据,并将数据存储到链表中。它演示了 C 语言中的文件操作、内存分配、链表操作等基本编程技巧。


原文地址: https://www.cveoy.top/t/topic/pioJ 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录