保存结构体到本地(二进制)

#include <stdio.h>
typedef struct student
{
float score1;
float score2;
float score3;
float avr;
}STUDENT;
void save(STUDENT * student)//以二进制形式保存
{

FILE *fp=NULL;
fp=fopen("test.bin","wb");
if(fp==NULL)
printf("文件为空");
if(fwrite((void*)student,sizeof(STUDENT),1,fp)!=1)
printf("写入失败");
}
int main()
{
int i;
STUDENT stu[3]={{0}};
for(i=0;i<3;i++)
{
printf("请输入第%d个同学的成绩:",i+1);
scanf("%3f %3f %3f",&stu[i].score1,&stu[i].score2,&stu[i].score3);
}
for(i=0;i<3;i++)
{
stu[i].avr=(stu[i].score1+stu[i].score2+stu[i].score3)/3;
printf("第%d个同学的成绩是:%f %5f %5f %5f",i+1,stu[i].score1,stu[i].score2,stu[i].score3,stu[i].avr);
printf("\n");
}
for(i=0;i<3;i++)
save(&stu[i]);
printf("\n");

return 0;
}

时间: 2024-11-25 11:43:36

保存结构体到本地(二进制)的相关文章

保存结构体到文件

经常有这样一种需求,希望有些设置的信息(比如说账号信息)能够掉电后不丢失,重新开机后能够重新读出来.最简单的做法是把信息保存在文件中,文件在nand flash上就不会掉电丢失. 我们不仅可以向文件中写字符串,其实写结构体也是可以的.注意结构体里面不能有指针. 假设我们要保存一个账号结构体到文件, #include <stdio.h>#include <errno.h>#include <string.h>typedef struct _Account{ char us

C++结构体对象数组的二进制方式读写

以一个学生信息的结构体数组为例. #include<iostream>#include<string>#include<fstream>using namespace std;struct Student{public: int n;//学号 char name[20];//姓名 int age;//年龄};int main(){ const int N=3; Student a[N]; //下面进行输入每个学生信息for(int i=0;i<N;i++){ ci

梓益C语言学习笔记之结构体-共用体-枚举

有人说,我们需要将不同类型的数据组合成一个整体,于是,就有了结构体 一.结构体的概念: 一种或多种基本类型或构造类型的数据的集合. 二.定义方法: 先定义结构体类型,再去定义结构体变量 struct  结构体类型名{ 成员列表 }; 如: struct stu{ int num; char name[20]; char sex; }; struct stu  lucy,bob,lilei;//定义了三个struct stu类型的变量 每个变量都有三个成员,分别是num name  sex 通常咱

保存接口信息的两个结构体ifconf和ifreq

用ioctl获得本地ip地址时要用到两个结构体ifconf和ifreq,它们对于大多数人来说都是比较陌生的,这里给大家一种比较简单的理解方法,当然只一种帮助理解的方法,在描述中可能会有一些地方与真实定义有所出入,仅供参考. 首先先认识一下ifconf和ifreq: //ifconf通常是用来保存所有接口信息的 //if.h struct ifconf { int ifc_len; /* size of buffer */ union { char *ifcu_buf; /* input from

QT: QByteArray储存二进制数据(包括结构体,自定义QT对象)

因为利用QByteArray可以很方便的利用其API对内存数据进行访问和修改, 构建数据库blob字段时必不可少; 那如何向blob内写入自定义的结构体和类 1. 利用memcpy拷贝内存数据 //自定义person结构体 Cpp代码   typedef struct { int age; char name[20]; }Person; //向QByteArray写入多个结构体 void writeStruct() { QByteArray ba; ba.resize(2*sizeof(Pers

poj 2243 bfs 利用 结构体中的step成员保存步数 ,STL的队列

//BFS #include <iostream> #include <queue> using namespace std; bool used[8][8]; int move[8][2]={1,2, -1,2, -2,1, -2,-1, -1,-2, 1,-2, 2,-1, 2,1}; struct position { int i,j; int step; position(int a,int b,int c) { i=a; j=b; step=c; } }; int mai

qsettings 保存自定义结构体(QVariant与自定义结构体相互转化)

参考博文:QVariant与自定义数据类型转换的方法. 这里摘取其关键内容: 1.将自定义数据类型使用Q_DECLARE_METATYPE宏进行声明,便于编译器识别. 2.在插入对象的时候,声明QVariant对象,使用其setValue方法添加自定义对象. 3.在读取的时候,采用QVariant对象的value方法返回自定义对象. 写入: //类型转换 QVariant v; v.setValue(MyStruct);  读取: //转换为自定义的结构体实例 MyStruct s = v.va

c 结构体读取与保存

1.结构体保存到文本 1 #include <stdio.h> 2 #include <stdlib.h> 3 #include <string.h> 4 #define max 3 5 6 typedef struct student{ 7 char name[10]; //最好用数组,方便,用指针到时写入到文本不好操作 8 int age; 9 int score; 10 }STU; 11 int size = sizeof(STU); 12 void write(

QByteArray储存二进制数据(包括结构体,自定义QT对象)

因为利用QByteArray可以很方便的利用其API对内存数据进行访问和修改, 构建数据库blob字段时必不可少; 那如何向blob内写入自定义的结构体和类 1. 利用memcpy拷贝内存数据 //自定义person结构体 Cpp代码   typedef struct { int age; char name[20]; }Person; //向QByteArray写入多个结构体 void writeStruct() { QByteArray ba; ba.resize(2*sizeof(Pers