Excel表格网

c语言,怎么将结构体写入文件?

264 2024-03-19 23:58 admin   手机版

一、c语言,怎么将结构体写入文件?

一般有两种方法.

struct A{ int a; float f; char s[10];}m;

为例:

一种是写文本文件

以"w"打开

fprintf(fp, "%d %f %s\n", m.a,m.f, m.s);

另一种是写二进制文件.

以"wb"打开

fwrite(&m, sizeof(m), 1, fp);

二、c语言文件写入结构体时怎么写完?

一般有两种方法. 以 struct A{ int a; float f; char s[10];}m;为例: 一种是写文本文件 以"w"打开 fprintf(fp, "%d %f %s\n", m.a,m.f, m.s)

;另一种是写二进制文件. 以"wb"打开 fwrite(&m, sizeof(m), 1, fp)

三、c语言链表写入文件出现乱码?

这用的二进制输出流。你用记事本打开肯定不能看啊。

四、c语言文件写入结构体时怎么写完一个结构体自动换行?

假设已经打开的文件句柄为fp如果是文本文件,用如下语句写入换行fprintf(fp,"\n");如果是二进制文件,用如下语句写入换行charch[]="\n\r";fwrite(ch,2,1,fp);

五、c语言中将结构体数组写入文件的题?

fwrite(&cus[i],sizeof(structclient),1,fp);这一句的作用:

将数组cus的第i+1个结构体写入文件。因为他传入的是指针&cus[i],即第i+1个元素的首位地址,而且写入的长度是该结构体类型的size。

如果你想要把整个结构体数组都写入文件,则应该为:

fwrite(cus,sizeof(cus),1,fp);

或者

fwrite(&cus[0],sizeof(cus),1,fp);

对于像结构体和数组这样的串行数据,在内存中是连续存储的。所以我们在处理的时候,经常只需要确认它的首地址和长度就ok了.对这一点应用熟练了,你会充分感受到指针带来的便捷,在很多问题上也就如鱼得水……

仅供参考!

六、写入文件中文乱码问题怎么办?

说说我的经历,我想用英文版的win10,设置完,就开始用了。

没想到,过了两个星期,发现我的visual stdio 认不出中文了,而且不仅是注释,连代码中出现的中文字符都报错。

一开始,就觉得编码格式有问题,我就修改了我代码的编码格式,不过没什么用,因为不同同事的电脑不一样,格式不能完全统一。然后我以为vs出了问题,然后就修复了一下vs,结果还是不管用;

然后我怀疑是英文版系统导致,我就改回了中文版,仍然没有解决;

最后在这里解决了,方法是设置非Unicode

七、C语言中如何用writefile将结构体写入文件,写可以写进去,但里面很多乱码?

你用自己定义的结构体写入文件,文件当然不知道如体解析你定义的结构体,只能自己解析如果想能看明白,如txt文件中,则将结构体成员转为字符串,逐个写入吧

八、c语言中怎么把一个结构体数组写入文件?

C语言,要将结构体中的数据存到磁盘上需要使用与文件操作相关的库函数。首先要使用文件打开函数fopen()。fopen函数用来打开一个文件,其调用的一般形式为: 文件指针名=fopen(文件名,使用文件方式) 其中,“文件指针名”必须是被说明为FILE 类型的指针变量,“文件名”是被打开文件的文件名。 “使用文件方式”是指文件的类型和操作要求。“文件名”是字符串常量或字符串数组。其次,使用文件读写函数读取文件。

九、C语言,结构体指针字符,二进制文件写入和读取?

打开方式用二进制方式打开,如FILE*fp=fopen("a.zip","rb+");然后读用fread去读。1、对于程序来说,不管后缀名如何,文件分为两种类型:文本文件和二进制文件。2、C语言里有一系列文件操作函数。区分文本和二进制文件,需要在打开文件时设置不同的控制符mode的变量即可。fopen的函数原型:FILE*fopen(constchar*path,constchar*mode);fopen函数的第一个参数是文件路径,第二个参数是打开方式,有以下几种方式:  r以只读方式打开文件,该文件必须存在。  r+以可读写方式打开文件,该文件必须存在。  rb+读写打开一个二进制文件,允许读数据。  rw+读写打开一个文本文件,允许读和写。  w打开只写文件,若文件存在则文件长度清为0,即该文件内容会消失。若文件不存在则建立该文件。  w+打开可读写文件,若文件存在则文件长度清为零,即该文件内容会消失。若文件不存在则建立该文件。  a以附加的方式打开只写文件。若文件不存在,则会建立该文件,如果文件存在,写入的数据会被加到文件尾,即文件原先的内容会被保留。(EOF符保留)  a+以附加方式打开可读写的文件。若文件不存在,则会建立该文件,如果文件存在,写入的数据会被加到文件尾后,即文件原先的内容会被保留。(原来的EOF符不保留)  wb只写打开或新建一个二进制文件;只允许写数据。  wb+读写打开或建立一个二进制文件,允许读和写。  wt+读写打开或着建立一个文本文件;允许读写。  at+读写打开一个文本文件,允许读或在文本末追加数据。  ab+读写打开一个二进制文件,允许读或在文件末追加数据。  上述的形态字符串都可以再加一个b字符,如rb、w+b或ab+等组合,加入b字符用来告诉函数库打开的文件为二进制文件,而非纯文字文件。

十、为什么我的writefile写入文件的数据是乱码?

这个不是你程序的问题,是Windows记事本的Bug,因为程序输出的某些字符触发了这个bug,记事本把文件当成unicode编码处理,结果乱码。

把这句ofile<<a[i]<<" "; 换了一下顺序改成ofile<<" "<<a[i]; 就不会乱码了。

记事本这样的bug很多,比如记事本新建一个文本,打开以后输入:联通 这两个字, 保存 ,关闭记事本。 再打开,你看看变成什么了?

有一个开玩笑的说法是因为中国联通把微软中国得罪了…… 记事本保存的时候,默认使用ansi编码 但是用ansi编码呢,联通这两个字的开头正好是:fffe..... 这样的,于是再打开呢,他就以为是utf-8编码了,但是按照utf-8来解码呢,却造成乱码了

顶一下
(0)
0%
踩一下
(0)
0%
相关评论
我要评论
用户名: 验证码:点击我更换图片
上一篇:返回栏目