void lianbiao(struct student *head) { FILE *fp; struct student *p1, *q1; q1 = head; if ((fp = fopen("duli16.3.dat", "r")) == NULL) { printf("File open error!\n"); return; } while (1) { p1 = (struct student *)malloc(sizeof(struct student)); if((fscanf(fp, "%s %s %lf", p1->num, p1->name, &p1->money)) ==-1){ break; }; // printf("%s\n",p1->num); p1->next = NULL; q1->next = p1; q1 = p1; } q1->next = NULL; fclose(fp); // printf("111\n"); }
时间: 2024-01-19 19:04:55 浏览: 62
lianbiao.rar_最近点_链表查找
好的!下面是添加了注释的代码:
```c
void lianbiao(struct student *head) {
FILE *fp; // 声明文件指针
struct student *p1, *q1;
q1 = head; // 存储链表头节点的指针
// 打开文件,如果打开失败则输出错误信息并返回
if ((fp = fopen("duli16.3.dat", "r")) == NULL) {
printf("File open error!\n");
return;
}
// 不断读取文件中的数据,直到读到文件末尾
while (1) {
// 分配节点空间
p1 = (struct student *)malloc(sizeof(struct student));
// 读取文件中的数据
if((fscanf(fp, "%s %s %lf", p1->num, p1->name, &p1->money)) ==-1){
break;
};
// 将节点插入链表中
p1->next = NULL;
q1->next = p1;
q1 = p1;
}
// 将链表末尾的指针指向 NULL
q1->next = NULL;
// 关闭文件
fclose(fp);
}
```
注释中解释了每一行代码的作用,方便了解代码的功能和流程。
阅读全文