c语言将文件读入结构体,结构体中有指针
时间: 2023-11-08 07:52:08 浏览: 284
在C语言中,可以将文件的内容读入结构体中,包括结构体中的指针。下面是一个示例代码,演示了如何实现这个功能:
```c
#include <stdio.h>
#include <stdlib.h>
typedef struct {
int id;
char name[20];
int *grades;
} Student;
void readStudentFromFile(Student *student, FILE *file) {
fscanf(file, "%d", &(student->id));
fscanf(file, "%s", student->name);
int numGrades;
fscanf(file, "%d", &numGrades);
student->grades = (int*) malloc(numGrades * sizeof(int));
for (int i = 0; i < numGrades; i++) {
fscanf(file, "%d", &(student->grades[i]));
}
}
int main() {
FILE *file = fopen("students.txt", "r");
if (file == NULL) {
printf("Failed to open file.\n");
return 1;
}
int numStudents;
fscanf(file, "%d", &numStudents);
Student *students = (Student*) malloc(numStudents * sizeof(Student));
for (int i = 0; i < numStudents; i++) {
readStudentFromFile(&students[i], file);
}
fclose(file);
// 使用读入的数据进行操作...
// 释放内存
for (int i = 0; i < numStudents; i++) {
free(students[i].grades);
}
free(students);
return 0;
}
```
在这个示例中,我们定义了一个`Student`结构体,其中包括了学生的ID、姓名和成绩(使用指针动态分配内存)。然后,我们使用`readStudentFromFile`函数从文件中读取学生的信息,并将其存储在结构体数组中。
阅读全文