c 结构体读取与保存
1.结构体保存到文本
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define max 3 typedef struct student{
char name[]; //最好用数组,方便,用指针到时写入到文本不好操作
int age;
int score;
}STU;
int size = sizeof(STU);
void write(STU *);
void input(STU *);
void output(STU *);
//void clean(STU *); void main(void)
{
STU kang[max];
input(kang);
output(kang);
write(kang);
clean(kang);
} void input(STU * student)
{
char temp[];
int i=;
while(i<max && fgets(temp,sizeof(temp),stdin)!=NULL && temp[]!='\0' )
{
//student->name = (char *) malloc(strlen(temp)+1);
strcpy(student->name,temp);
puts("age ?");
scanf("%d",&student->age);
puts("score ?");
scanf("%d",&student->score); while(getchar() != '\n')
continue; student++;
i++;
if(i<max)
puts("next name");
} } void output(STU * student)
{
int i=;
while(i<max)
{
printf("%d---%s---%d---%d\n",i,student->name,student->age,student->score);
i++;
student++;
} } void write(STU * student)
{
FILE *fp;
int i=;
if( (fp=fopen("data.txt","w+b")) == NULL )
{
puts("open error");
} while(i<max)
{
fwrite(student,size,,fp);
i++;student++;
} fclose(fp); } void clean(STU * student)
{
int i=;
while(i<max)
{
free(student->name);
i++;
student++;
}
}
2.读取结构体
#include <stdio.h>
#include <stdlib.h>
#define max 3 typedef struct student{
char name[];
int age;
int score;
}STU;
int size = sizeof(STU);
void read(STU *); void main(void)
{
STU kang[max];
read(kang); int i=;
while(i<max)
{
printf("%s---%d---%d\n",kang[i].name,kang[i].age,kang[i].score);
i++;
} } void read(STU * student)
{
FILE *fp;
int i=;
if( (fp=fopen("data.txt","a+b")) == NULL )
{
puts("open error");
exit();
}
rewind(fp);
while(i<max)
{
fread(student,size,,fp);
student++;i++;
} fclose(fp); }
c 结构体读取与保存的更多相关文章
- c语言学习之基础知识点介绍(十二):结构体的介绍
一.结构体的介绍 /* 语法: struct 结构体名{ 成员列表; }; 切记切记有分号! 说明:成员列表就是指你要保存哪些类型的数据. 注意:上面的语法只是定义一个新的类型,而这个类型叫做结构体类 ...
- 你好,C++(14)如何描述“一个名叫陈良乔,年龄33岁,身高173厘米,体重61.5千克的男人”——3.8 用结构体类型描述复杂的事物
3.8 用结构体类型描述复杂的事物 利用C++本身所提供的基本数据类型所定义的变量,只能表达一些简单的事物.比如我们可以用int类型定义nAge变量表示人的年龄,用string类型定义strName ...
- IPv4地址结构体sockaddr_in详解
sockaddr_in结构体定义 struct sockaddr_in { sa_family_t sin_family; //地址族(Address Family) uint16_t sin_por ...
- 用结构体解析Pascal字符串
来源:https://www.cnblogs.com/qiuyuwutong/p/8708844.html 1.什么是柔性数组? 柔性数组既数组大小待定的数组, C语言中结构体的最后一个元素可以是大小 ...
- C# 结构体和List<T>类型数据转Json数据保存和读取
C# 结构体和List<T>类型数据转Json数据保存和读取 一.结构体转Json public struct FaceLibrary { public string face_name ...
- 字节序转换与结构体位域(bit field)值的读取
最近又遇到了几年前遇到的问题,标记一下. 对于跨字节位域(bit field)而言,如果数据传输前后环境的字节序不同(LE->BE,BE->LE),简单地调用(ntohs/ntohl/ht ...
- qsettings 保存自定义结构体(QVariant与自定义结构体相互转化)
参考博文:QVariant与自定义数据类型转换的方法. 这里摘取其关键内容: 1.将自定义数据类型使用Q_DECLARE_METATYPE宏进行声明,便于编译器识别. 2.在插入对象的时候,声明QVa ...
- c语言学习之基础知识点介绍(十七):写入读取结构体、数组、结构体数组
一.结构体的写入和读取 //写入结构体 FILE *fp = fopen("/Users/ios/Desktop/1.data", "w"); if (fp) ...
- C语言 结构体数组保存到二进制文件中
在项目中我定义了一个结构体数组,头文件如下: C/C++ code ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 ...
随机推荐
- ubuntu18.04 没声音解决方案(坑自己版)
那啥,半个月没开电脑了,这几天打开发现系统没声了 那咋办呢,修一修呗 搜索了下问题,还挺简单的 jiang@ryzen:~$ sudo apt install pavucontrol 打开 jiang ...
- python学习笔记(一):基础知识点
defaultdict函数将所有值初始化为指定类型 from collections import defaultdict a = defaultdict(int) a[0] '' python按照引 ...
- Altera三速以太网IP核使用(下篇)--- 百兆网接口设计与使用
MAC IP核的主要作用是:实现数据链路层协议,分为TX方向与RX方向,TX方向实现的是在原包文的前面加上7个55和1个D5,RX方向则相反.在使用这个 MAC IP核之前,首先确认下自己使用的网卡是 ...
- 数据结构与算法之Stack(栈)——in dart
用dart 语言实现一个简单的stack(栈).栈的内部用List实现. class Stack<E> { final List<E> _stack; final int ca ...
- 基于Opencv的人脸检测及识别
一.实验目的:我这里完成的是,将8张人脸图片(4组,每组两张)存入库中,选取1张图片,程序识别出与其匹配的另一张. 这里介绍分三个步骤完成该工作,①程序读取摄像头.拍照 ②程序从电脑文档中读取图片 ...
- 变态的iis10
IIS10发布网站不能使用.NET4.0需要重新注册在之前版本的系统中使用如下命令可以直接重新注册: 但是windowsServer2016(iis 10) 使用该命令 提示 版本不支持 C:\WIN ...
- 存一下emacs配置
(global-set-key [f9] 'compile-file)(global-set-key [f10] 'gud-gdb)(global-set-key (kbd "C-z&quo ...
- 解决 idea template jsp模板中使用自定义路径 模板不显示问题
${} 是一个模板中的关键字,所以建立时需要用 \ 注释即可正常显示 ${APP_PATH}
- 【转】自动化测试 - Appium + Python史上最全最简环境搭建步骤
一,为什么是Appium借一张图: 1.1 Appium优点 l 开源 l 跨架构:NativeApp.Hybird App.Web App l 跨设备:Android.iOS.Firefox ...
- [转]git命令之git remote的用法
git remote git remote -v git init git add xxx git commit -m 'xxx' git remote add origin ssh://softw ...