输入文本
读取和写入struct结构体
生成代码
#include <stdio.h>
// 定义结构体
struct Person {
char name[20];
int age;
};
int main() {
// 创建结构体变量
struct Person person = {"Alice", 20};
// 打开文件
FILE* file = fopen("person.txt", "wb");
if (file == NULL) {
printf("无法打开文件\n");
return 1;
}
// 写入结构体
if (fwrite(&person, sizeof(struct Person), 1, file) != 1) {
printf("写入结构体失败\n");
fclose(file);
return 1;
}
// 关闭文件
fclose(file);
// 重新打开文件进行读取
file = fopen("person.txt", "rb");
if (file == NULL) {
printf("无法打开文件\n");
return 1;
}
// 读取结构体
struct Person readPerson;
if (fread(&readPerson, sizeof(struct Person), 1, file) != 1) {
printf("读取结构体失败\n");
fclose(file);
return 1;
}
// 输出读取的结构体信息
printf("Name: %s\n", readPerson.name);
printf("Age: %d\n", readPerson.age);
// 关闭文件
fclose(file);
return 0;
}
此示例首先定义了一个Person结构体,包括姓名和年龄。然后,创建一个Person结构体变量,并将它写入名为person.txt的二进制文件中。接着,重新打开文件,从文件中读取结构体,并输出读取的结构体信息。
我自己改了一下代码,扩展成struct数组
#include <stdio.h>
// 定义结构体
struct Person {
char name[20];
int age;
};
int main() {
// 创建结构体变量
struct Person persons[]={ //结构体数组
{"张三",145.0},
{"李四",130.5},
{"王五",148.5},
{"赵六",139.0},
{"小林",150.0}
};
// 打开文件
FILE* file = fopen("person.txt", "wb");
if (file == NULL) {
printf("无法打开文件\n");
return 1;
}
// 写入结构体
int num=sizeof(persons)/sizeof(persons[0]);
for (int i = 0; i < num; i++)
{
if ( fwrite(&(persons[i]), sizeof(struct Person), 1, file)!= 1) {
printf("写入结构体失败\n");
fclose(file);
return 1;
}
}
// 关闭文件
fclose(file);
// 重新打开文件进行读取
file = fopen("person.txt", "rb");
if (file == NULL) {
printf("无法打开文件\n");
return 1;
}
// 读取结构体
struct Person readPerson[num];
for (int i = 0; i < num; i++)
{
if (fread(&(readPerson[i]), sizeof(struct Person), 1, file) != 1) {
printf("读取结构体失败\n");
fclose(file);
return 1;
}
// 输出读取的结构体信息
printf("Name: %s\n", readPerson[i].name);
printf("Age: %d\n", readPerson[i].age);
}
// 关闭文件
fclose(file);
return 0;
}
标签:读取,return,struct,灵码,Person,file,printf,存取,通义
From: https://blog.csdn.net/zhourongxiang1/article/details/136707493