c语言动态链表储存三个学生的信息并存入文件stud
时间: 2024-01-21 13:02:39 浏览: 222
C语言链表实现学生信息管理
以下是一个简单的示例代码,用于储存三个学生的信息到动态链表,并将链表中的数据存入文件 "stud.txt" 中:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
// 学生信息结构体
typedef struct Student {
char name[20];
int id;
float score;
struct Student *next; // 指向下一个结点的指针
} Student;
// 添加学生信息到链表中
void addStudent(Student **head, char name[], int id, float score) {
Student *newStudent = (Student *)malloc(sizeof(Student));
strcpy(newStudent->name, name);
newStudent->id = id;
newStudent->score = score;
newStudent->next = NULL;
if (*head == NULL) {
*head = newStudent;
} else {
Student *p = *head;
while (p->next != NULL) {
p = p->next;
}
p->next = newStudent;
}
}
int main() {
// 初始化链表头部指针
Student *head = NULL;
// 添加三个学生信息到链表中
addStudent(&head, "Tom", 1001, 90);
addStudent(&head, "Jerry", 1002, 85);
addStudent(&head, "Alice", 1003, 95);
// 将链表中的数据存入文件 "stud.txt" 中
FILE *fp = fopen("stud.txt", "w");
if (fp == NULL) {
printf("Failed to open file.\n");
return -1;
}
Student *p = head;
while (p != NULL) {
fprintf(fp, "%s %d %.2f\n", p->name, p->id, p->score);
p = p->next;
}
fclose(fp);
// 释放链表中的内存
p = head;
while (p != NULL) {
Student *tmp = p;
p = p->next;
free(tmp);
}
return 0;
}
```
在上面的示例代码中,我们定义了一个 `Student` 结构体,用于存储学生的信息。其中,`name` 字符数组用于存储学生姓名,`id` 整型变量用于存储学生学号,`score` 浮点型变量用于存储学生成绩,`next` 指针用于指向下一个结点。
然后,我们定义了一个 `addStudent()` 函数,用于将学生信息添加到链表中。函数通过动态分配内存来创建新的结点,并将结点插入到链表的尾部。
最后,我们在 `main()` 函数中调用 `addStudent()` 函数添加三个学生信息到链表中,然后将链表中的数据存入文件 "stud.txt" 中。文件操作使用了 C 语言标准库中的 `fopen()` 和 `fprintf()` 函数。最后,我们释放了链表中的内存,避免内存泄漏。
注意:上面示例代码中,我们没有对文件读取操作进行处理。如果需要从文件中读取数据,并将数据存入链表中,则需要用 `fopen()` 和 `fscanf()` 函数来读取文件数据,并使用 `addStudent()` 函数将数据添加到链表中。
阅读全文