如果我是要输入一个结构体数组 输入多个数要怎么将其存入文件和读取
时间: 2025-01-26 15:09:05 浏览: 37
当然可以!如果你要输入一个结构体数组并将多个数存入文件并进行读取,可以按照以下步骤进行:
1. 定义结构体。
2. 创建结构体数组。
3. 输入数据并存储到结构体数组中。
4. 将结构体数组写入文件。
5. 从文件中读取数据并存储到结构体数组中。
下面是一个示例代码,展示了如何实现上述步骤:
```c
#include <stdio.h>
#include <stdlib.h>
// 定义结构体
typedef struct {
int id;
char name[50];
float score;
} Student;
// 函数声明
void writeToFile(const char *filename, Student *students, int count);
void readFromFile(const char *filename, Student *students, int count);
int main() {
int n;
printf("请输入学生人数: ");
scanf("%d", &n);
// 创建结构体数组
Student *students = (Student *)malloc(n * sizeof(Student));
if (students == NULL) {
printf("内存分配失败\n");
return 1;
}
// 输入数据
for (int i = 0; i < n; i++) {
printf("请输入第 %d 个学生的ID, 姓名和分数: ", i + 1);
scanf("%d %s %f", &students[i].id, students[i].name, &students[i].score);
}
// 写入文件
writeToFile("students.dat", students, n);
// 读取文件
Student *readStudents = (Student *)malloc(n * sizeof(Student));
if (readStudents == NULL) {
printf("内存分配失败\n");
free(students);
return 1;
}
readFromFile("students.dat", readStudents, n);
// 打印读取的数据
printf("\n从文件中读取的学生信息:\n");
for (int i = 0; i < n; i++) {
printf("ID: %d, 姓名: %s, 分数: %.2f\n", readStudents[i].id, readStudents[i].name, readStudents[i].score);
}
// 释放内存
free(students);
free(readStudents);
return 0;
}
void writeToFile(const char *filename, Student *students, int count) {
FILE *file = fopen(filename, "wb");
if (file == NULL) {
printf("无法打开文件进行写入\n");
return;
}
fwrite(students, sizeof(Student), count, file);
fclose(file);
}
void readFromFile(const char *filename, Student *students, int count) {
FILE *file = fopen(filename, "rb");
if (file == NULL) {
printf("无法打开文件进行读取\n");
return;
}
fread(students, sizeof(Student), count, file);
fclose(file);
}
```
在这个示例中,我们定义了一个`Student`结构体,并创建了一个结构体数组来存储多个学生的信息。然后,我们将数据写入文件,并从文件中读取数据并打印出来。
阅读全文
相关推荐


















