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. 20155305乔磊2016-2017-2《Java程序设计》第四周学习总结

    20155305乔磊2016-2017-2<Java程序设计>第四周学习总结 教材学习内容总结 继承 继承就是避免多个类间重复定义共同行为. 面向对象中,子类继承父类,就是把程序中相同的代 ...

  2. 20155339 《信息安全技术》实验二、Windows口令破解实验报告

    20155339 <信息安全技术>实验二.Windows口令破解实验报告 实验目的 了解Windows口令破解原理 对信息安全有直观感性认识 能够运用工具实现口令破解 系统环境 Windo ...

  3. Windows下安装RaibbitMQ

    1.软件准备 1.1 erlang语言包 到http://www.erlang.org/download.html下载,并且运行! 安装目录C:\Program Files (x86)\erl5.10 ...

  4. 存一下emacs配置

    (global-set-key [f9] 'compile-file)(global-set-key [f10] 'gud-gdb)(global-set-key (kbd "C-z&quo ...

  5. 获取文件mimes

    <?php /* * Copyright 2010-2013 Amazon.com, Inc. or its affiliates. All Rights Reserved. * * Licen ...

  6. 工作中遇到的令人头疼的bug

    工作中我们会遇到形形色色的bug,但是很多bug都可以调试很明显的看出来,这种bug解决起来我们不会那么头疼但是有些却让人头疼而捉急,特别是本地运行一切正常,上传服务器就会出现bug.现在我总结几个我 ...

  7. Java 注解 初探 (一)

    自JDK1.5之后,就开始出现注解.想要了解注解的来源和注解的用法,通过搜索引擎大都是针对某一个注解的解释,很难找到关于注解系列的文章,便自己看下. 基于Annotation的注释,说明Annotai ...

  8. Qt 利用XML文档,写一个程序集合 二

    接上一篇文章https://www.cnblogs.com/DreamDog/p/9213915.html XML文档的读写 一个根节点,下面每一个子节点代表一个子程序,内容为子程序名字,图标路径,e ...

  9. Jmeter如何做接口测试

    最近在学习Jmeter,记录下来,与大家分享. 1. 打开Jmeter,我用的是5.0版本,打开后如下图所示: 2. 右键测试计划,添加 - 线程(用户) - 线程组,如下如图所示: 3. 右键线程组 ...

  10. 【转】lvs、nginx、haproxy转发模式优缺点总结

    原文地址: https://yq.aliyun.com/ziliao/78374 一.LVS转发模式 LVS是章文嵩博士写的一个工作于四层的高可能性软件.不像后两者支持七层转发,不过也正因为其简单,所 ...