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. PG 存储函数调用变量的3种方法。

    一.假设有表student,字段分别有id,remark,name等字段. 二.写一个存储函数,根据传过去的变量ID更新remark的内容. 调用该存储函数格式如下:select  update_st ...

  2. Activemq首次运行报错 “找不到或无法加载主类”

    首次运行Program Files\apache-activemq-5.10.0\bin目录下的activemq.bat文件,报错信息如下: 找不到或无法加载主类 Files\apache-activ ...

  3. 安装虚拟机与初触linux心得

    安装虚拟机与初触linux心得 安装虚拟机 不知道是电脑问题还是软件问题,我安装虚拟机的过程异常坎坷,首先我在官网,360,太平洋等地方下载的virtualbox5.0以后的软件普遍有问题,问题是打不 ...

  4. eclipse 打包maven项目的坑

    一.问题: 公司开发了一个项目,需要作为后台服务运行,整个项目的构成是:[maven + spring + eclipse] 在使用打包的时候遇到许多问题: (1)eclipse中maven工具的集成 ...

  5. ADO.NET操作MySQL数据库

    前言 ADO.NET包括5大对象,分别是Connection.Command.DataReader.DataSet.DataAdapter,使用ADO.NET访问数据库有两个步骤:建立数据库连接.读取 ...

  6. 如何运用 Powershell 修改Office365和AD账户

    这段时间需要大量地修改AD用户的一些属性,例如邮件,UPN,登录名等等,以便和Office365的登录账号保持一致.写了个简单脚本进行批量修改. #Import AD ModuleImport-Mod ...

  7. 初探C#

    初探.NET底层原理 学习C#离不开.net平台,因为微软的开发平台真的是太强大了,它为每一个开发者都做了太多太多,但是我们不仅要知道怎么用,而且也应该知道其中的内部到底包含了什么.本篇文章不仅讲一些 ...

  8. 【snmp】Linux开启snmp及查询

    1.Linux snmp 1.安装snmp yum install -y net-snmp* 2.备份snmp配置 cp /etc/snmp/snmpd.conf /etc/snmp/snmpd.co ...

  9. No module named MYSQLdb 报错

    问题描述: 报错:ImportError: No module named MySQLdb 对于不同的系统和程序有如下的解决方法: easy_install mysql-python (mix os) ...

  10. JSON.stringify处理对象时的问题

    1. JSON.stringify({entry_key: 'test', entry_detail: undefined}) 结果 为 "{"entry_key": & ...