C语言文件的保存于读取

我现在又一个类structEngineerStruct//声明存储工程师信息的结构体{unsignedintEngineerNo;//工程师编号charEngineerN... 我现在又一个类
struct EngineerStruct //声明存储工程师信息的结构体
{
unsigned int EngineerNo; //工程师编号
char EngineerName[20]; //工程师姓名
enum Sex EngineerSex; //工程师性别
struct DateStruct EngineerBirth; //工程师生日
char EngineerHometown[10]; //工程师籍贯
unsigned int EngineerEducation; //工程师学历
char EngineerAddress[30]; //工程师地址
char EngineerPhone[15]; //工程师电话
unsigned int EngineerWorkYears; //工程师工龄
float EngineerBaseSalary; //工程师基本薪水
};

我想把类的信息保存到文件里,之后再读出来其中一条。
怎么保证不会读串行,比如把工龄成薪水。
展开
 我来答
tattackor
推荐于2016-09-05 · TA获得超过3.5万个赞
知道大有可为答主
回答量:5083
采纳率:94%
帮助的人:898万
展开全部
1.用文件操作函数就可以实现读取和保存。打开函数fopen,mode参数设置为“r”就可以使用fscanf函数读取文件内容。用fclose函数就可以实现保存并关闭文件。

2.对于程序来说,不管后缀名如何,文件分为两种类型:文本文件和二进制文件。
C语言里有一系列文件操作函数。区分文本和二进制文件,需要在打开文件时设置不同的控制符mode的变量即可。

3.fopen的函数原型:FILE * fopen(const char * path,const char * mode);
fopen函数的第一个参数是文件路径,第二个参数是打开方式,有以下几种方式:
r 以只读方式打开文件,该文件必须存在。
r+ 以可读写方式打开文件,该文件必须存在。
rb+ 读写打开一个二进制文件,允许读数据。
rw+ 读写打开一个文本文件,允许读和写。
w 打开只写文件,若文件存在则文件长度清为0,即该文件内容会消失。若文件不存在则建立该文件。
w+ 打开可读写文件,若文件存在则文件长度清为零,即该文件内容会消失。若文件不存在则建立该文件。
a 以附加的方式打开只写文件。若文件不存在,则会建立该文件,如果文件存在,写入的数据会被加到文件尾,即文件原先的内容会被保留。(EOF符保留)
a+ 以附加方式打开可读写的文件。若文件不存在,则会建立该文件,如果文件存在,写入的数据会被加到文件尾后,即文件原先的内容会被保留。 (原来的EOF符不保留)
wb 只写打开或新建一个二进制文件;只允许写数据。
wb+ 读写打开或建立一个二进制文件,允许读和写。
wt+ 读写打开或着建立一个文本文件;允许读写。
at+ 读写打开一个文本文件,允许读或在文本末追加数据。
ab+ 读写打开一个二进制文件,允许读或在文件末追加数据。
上述的形态字符串都可以再加一个b字符,如rb、w+b或ab+等组合,加入b 字符用来告诉函数库打开的文件为二进制文件,而非纯文字文件。
流风回雪のEDEN
2011-04-15 · TA获得超过527个赞
知道小有建树答主
回答量:190
采纳率:0%
帮助的人:227万
展开全部
使用fprintf将结构体的信息保存到文件中,可以用\t或者空格分割,然后用fscanf读取,也是\t或者空格读取,取出你想要的信息就行了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友bd6b4b5
2011-04-15 · TA获得超过252个赞
知道小有建树答主
回答量:168
采纳率:0%
帮助的人:192万
展开全部
结构体的话用fwrite和fread去进行读和写,那样就不会出错,比如写的时候

struct EngineerStruct ss,*p
p=&ss;
fwrite(p,sizeof(struct EngineerStruct ),1,fp)
读的时候就fread(p,sizeof(struct EngineerStruct ),1,fp)
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式