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 结构体读取与保存的更多相关文章

  1. c语言学习之基础知识点介绍(十二):结构体的介绍

    一.结构体的介绍 /* 语法: struct 结构体名{ 成员列表; }; 切记切记有分号! 说明:成员列表就是指你要保存哪些类型的数据. 注意:上面的语法只是定义一个新的类型,而这个类型叫做结构体类 ...

  2. 你好,C++(14)如何描述“一个名叫陈良乔,年龄33岁,身高173厘米,体重61.5千克的男人”——3.8 用结构体类型描述复杂的事物

    3.8  用结构体类型描述复杂的事物 利用C++本身所提供的基本数据类型所定义的变量,只能表达一些简单的事物.比如我们可以用int类型定义nAge变量表示人的年龄,用string类型定义strName ...

  3. IPv4地址结构体sockaddr_in详解

    sockaddr_in结构体定义 struct sockaddr_in { sa_family_t sin_family; //地址族(Address Family) uint16_t sin_por ...

  4. 用结构体解析Pascal字符串

    来源:https://www.cnblogs.com/qiuyuwutong/p/8708844.html 1.什么是柔性数组? 柔性数组既数组大小待定的数组, C语言中结构体的最后一个元素可以是大小 ...

  5. C# 结构体和List<T>类型数据转Json数据保存和读取

    C#  结构体和List<T>类型数据转Json数据保存和读取 一.结构体转Json public struct FaceLibrary { public string face_name ...

  6. 字节序转换与结构体位域(bit field)值的读取

    最近又遇到了几年前遇到的问题,标记一下. 对于跨字节位域(bit field)而言,如果数据传输前后环境的字节序不同(LE->BE,BE->LE),简单地调用(ntohs/ntohl/ht ...

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

    参考博文:QVariant与自定义数据类型转换的方法. 这里摘取其关键内容: 1.将自定义数据类型使用Q_DECLARE_METATYPE宏进行声明,便于编译器识别. 2.在插入对象的时候,声明QVa ...

  8. c语言学习之基础知识点介绍(十七):写入读取结构体、数组、结构体数组

    一.结构体的写入和读取 //写入结构体 FILE *fp = fopen("/Users/ios/Desktop/1.data", "w"); if (fp) ...

  9. 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 ...

随机推荐

  1. 最短寻道优先算法(SSTF)——磁盘调度管理

    原创 最近操作系统实习,敲了实现最短寻道优先(SSTF)——磁盘调度管理的代码. 题目阐述如下: 设计五:磁盘调度管理 设计目的: 加深对请求磁盘调度管理实现原理的理解,掌握磁盘调度算法. 设计内容: ...

  2. 最近最少使用算法(LRU)——页面置换

    原创 上一篇博客写了先进先出算法(FIFO)——页面置换:http://www.cnblogs.com/chiweiming/p/9058438.html 此篇介绍最近最少使用算法(LRU)——页面置 ...

  3. xshell sftp可用命令,sftp: cannot open d: to write![解决]

    sftp可用命令: cd 路径 更改远程目录到“路径” lcd 路径 更改本地目录到“路径” chgrp group path 将文件“path”的组更改为“group” chmod mode pat ...

  4. Hello World 和 模块分解

    Hello World 和 模块分解 在命令行中编译运行HelloWorld public class HelloWorld { public static void main(String[] ar ...

  5. 微信小程序点击事件

    <---------------------------------------------------index文件夹:------------------------------------ ...

  6. MYSQL中日期与字符串间的相互转换

    一.字符串转日期 下面将讲述如何在MYSQL中把一个字符串转换成日期: 背景:rq字段信息为:20100901 1.无需转换的: SELECT * FROM tairlist_day WHERE rq ...

  7. 搜索引擎ElasticSearch系列(三): ElasticSearch2.4.4 bigdesk插件安装

    一:ElasticSearch bigdesk插件简介 bigdesk是elasticsearch的一个集群监控工具,可以通过它来查看es集群的各种状态,如:cpu.内存使用情况,索引数据.搜索情况, ...

  8. 利用工厂模式实现serviec层和dao层解耦

    利用工厂模式实现serveice和dao层的解耦,这样就可以不用在service层实例化dao层的对象,当dao层代码发生改变的时候(数据库实现发生改变)直接修改配置文件就不用改变service层的代 ...

  9. linux命令提示符设置

    变成绿色 [root@localhost /usr/local]#vim /root/.bashrc # .bashrc # User specific aliases and functions a ...

  10. TPO-17 C1 Find materials for an opera paper

    TPO-17 C1 Find materials for an opera paper production n. 成果:产品:生产:作品 第 1 段 1.Listen to a conversati ...