fread和fwrite结构体(菜鸟求教 fread 和 fwrite 怎么用啊)

:暂无数据 2026-09-03 06:50:01 :0

fread和fwrite结构体(菜鸟求教 fread 和 fwrite 怎么用啊)

各位老铁们好,相信很多人对fread和fwrite结构体都不是特别的了解,因此呢,今天就来为大家分享下关于fread和fwrite结构体以及菜鸟求教 fread 和 fwrite 怎么用啊的问题知识,还望可以帮助大家,解决大家的一些困惑,下面一起来看看吧!

本文目录

菜鸟求教 fread 和 fwrite 怎么用啊

1.存储时是按照结构体大小存的话 你就可以直接按大小取出 例如
struct Date {
int Day;
int Month;
int Year;
};
struct Date *d1;
d1.Day=18;
d1.Month=4;
d1.Year=2011;
fwrite( d1,sizeof(Date), 1, fp); // fp是指向要保存到的文件的指针
struct Date *d2;
fread( d2, sizeof(Date), 1, fp); //读取
2、fread和fscanf的区别
#include 《stdio.h》
int fread( void *buffer, size_t size, size_t num, FILE *stream );
函数fread()读取个对象(每个对象大小为size(大小)指定的字节数),并把它们替换到由buffer(缓冲区)指定的数组. 数据来自给出的输入流. 函数的返回值是读取的内容数量...
int fscanf( FILE *stream, const char *format, ... );
函数fscanf()以scanf()的执行方式从给出的文件流中读取数据. fscanf()的返回值是事实上已赋值的变量的数,如果未进行任何分配时返回EOF.
3.fread的操作对象是根据你FILE fp=fopen();定义
FILE *fopen( const char *fname, const char *mode );
fopen()函数打开由fname(文件名)指定的文件, 并返回一个关联该文件的流.如果发生错误, fopen()返回NULL. mode(方式)是用于决定文件的用途(例如 用于输入,输出,等等)
Mode(方式) 意义
"r" 打开一个用于读取的文本文件
"w" 创建一个用于写入的文本文件
"a" 附加到一个文本文件
"rb" 打开一个用于读取的二进制文件
"wb" 创建一个用于写入的二进制文件
"ab" 附加到一个二进制文件
"r+" 打开一个用于读/写的文本文件
"w+" 创建一个用于读/写的文本文件
"a+" 打开一个用于读/写的文本文件
"rb+" 打开一个用于读/写的二进制文件
"wb+" 创建一个用于读/写的二进制文件
"ab+" 打开一个用于读/写的二进制文件

visual c++里怎么用fwrite和fread才能对学生数据库(结构体)既能输入数据又能读取数据

,fread和fwrite用于读写各种类型的数据块
第一个参数是读写数据的内存区的指针, 第2个是每一项的大小,第3个是项数, 第4个是文件指针.说简单点fwrite就是把结构体中的数据写入文件中,而fread就是从文件中把数据写入结构体中。
例如:结构体变量student
FILE *file;
fwirte(&student,sizeof(student),1,file)
表示向file文件中写入student所指的结构体中的一项。
fread(&student,sizeof(student),1,file);
表示将file中的内容读入student中。
 #include 《stdio.h》   
int main(void)   
{   
FILE *stream;   
char msg = "this is a test";   
char buf;   
if ((stream = fopen("DUMMY.FIL", "w+"))   == NULL)   
{   
fprintf(stderr,   "Cannot open output file.\n");   
return 1;   
}  
 /* write some data to the file */
 fwrite(msg, strlen(msg)+1, 1, stream);   
/* seek to the beginning of the file */  
 fseek(stream, 0, SEEK_SET);   
/* read the data and display it */   
fread(buf, strlen(msg)+1, 1,stream);   
printf("%s\n", buf);   
fclose(stream);   
return 0;  
}

fread和fwrite读取/写入结构体数据时,文件内部位置指针是怎么变化的

结构体数据一般是在内存中紧挨着排列的,在写入结构体时,会整个结构一起写入,文件指针在写入完成后,是写入前后移结构体字节数,如果字节数不是4的倍数,在多数情况下会移动到4字节倍数位置,多出来的字节被跳过。

关于fwrite,fread的问题

写入文件中:
共写入三次,每次写入一个结构体的是8个字节,前4个字节是指针地址,后4个字节是一个int数据.
读文件件中:
//以下这一段有错误,
for(int i=0;i《nmemb;i++)
{
fread(&s,nmemb,sizeof(struct test),stream);
}
//以上这段有错误.
估计你是想分三次读出,那么应该是
for(int i=0;i《nmemb;i++)
{
fread(&s,sizeof(struct test),1,stream);
}
这样是读三次,每次读出一个结构体的数据8个字节,前4个为一个指针,后4个为一个int型数据
不过这样修改后仍然读不出期望的数据
(如果把读写文件合写为一个可以显示读出正确数据的假象)
这是因为,你存储的指针指向的地址是内存,而内存的数据是变化的,因此读不出期望的数据是很正常的.读出了正常的数据那可能是你的内存还没有被覆盖掉,这是假象,并不是程序正确.
可以把结构体中的char *name;修改为char name;
把写入文件中s.name="a";这样的赋值语句修改为:
strcpy(s.name,"a");
这样可以正确读出文件中保存的数据.
不知道这样修改后符不符合你的本意.

关于本次fread和fwrite结构体和菜鸟求教 fread 和 fwrite 怎么用啊的问题分享到这里就结束了,如果解决了您的问题,我们非常高兴。

fread和fwrite结构体(菜鸟求教 fread 和 fwrite 怎么用啊)

本文编辑:admin

更多文章:


withdrawal(withdrawal是什么意思)

withdrawal(withdrawal是什么意思)

今天给各位分享withdrawal是什么意思的知识,其中也会对withdrawal是什么意思进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!

2026年10月11日 07:00

根据流程图怎么编写程序(用c语言根据流程图写程序)

根据流程图怎么编写程序(用c语言根据流程图写程序)

大家好,今天小编来为大家解答以下的问题,关于根据流程图怎么编写程序,用c语言根据流程图写程序这个很多人还不知道,现在让我们一起来看看吧!

2026年10月11日 06:00

在from子句中可以出现(如何在from 子句中嵌套查询下面的语句在access中出错!)

在from子句中可以出现(如何在from 子句中嵌套查询下面的语句在access中出错!)

大家好,关于在from子句中可以出现很多朋友都还不太明白,不过没关系,因为今天小编就来为大家分享关于如何在from 子句中嵌套查询下面的语句在access中出错!的知识点,相信应该可以解决大家的一些困惑和问题,如果碰巧可以解决您的问题,还望

2026年10月11日 05:20

countif函数统计个数怎么用(countif函数怎么用 详解Excel中countif函数的使用方法)

countif函数统计个数怎么用(countif函数怎么用 详解Excel中countif函数的使用方法)

其实countif函数统计个数怎么用的问题并不复杂,但是又很多的朋友都不太了解countif函数怎么用 详解Excel中countif函数的使用方法,因此呢,今天小编就来为大家分享countif函数统计个数怎么用的一些知识,希望可以帮助到大

2026年10月11日 03:30

正则匹配数字之前的字符(正则表达式如何匹配前面是数字、中间是“/”、后面也是数字,就像2/3专业的模式)

正则匹配数字之前的字符(正则表达式如何匹配前面是数字、中间是“/”、后面也是数字,就像2/3专业的模式)

本篇文章给大家谈谈正则匹配数字之前的字符,以及正则表达式如何匹配前面是数字、中间是“/”、后面也是数字,就像2/3专业的模式对应的知识点,文章可能有点长,但是希望大家可以阅读完,增长自己的知识,最重要的是希望对各位有所帮助,可以解决了您的问

2026年10月11日 03:00

register语言学(register语言学)

register语言学(register语言学)

“register语言学”相关信息最新大全有哪些,这是大家都非常关心的,接下来就一起看看register语言学(register语言学)!

2026年10月11日 01:40

系统架构设计师可以直接考吗(学生可以报名系统架构设计师吗)

系统架构设计师可以直接考吗(学生可以报名系统架构设计师吗)

“系统架构设计师可以直接考吗”相关信息最新大全有哪些,这是大家都非常关心的,接下来就一起看看系统架构设计师可以直接考吗(学生可以报名系统架构设计师吗)!

2026年10月11日 01:00

orlnsertbootmediinselected(我电脑开机显示这个是什么意思or insert boot media in select)

orlnsertbootmediinselected(我电脑开机显示这个是什么意思or insert boot media in select)

大家好,如果您还对orlnsertbootmediinselected不太了解,没有关系,今天就由本站为大家分享orlnsertbootmediinselected的知识,包括我电脑开机显示这个是什么意思or insert boot med

2026年10月10日 23:00

display的用法(display是什么意思 详解display的含义和用法)

display的用法(display是什么意思 详解display的含义和用法)

大家好,如果您还对display的用法不太了解,没有关系,今天就由本站为大家分享display的用法的知识,包括display是什么意思 详解display的含义和用法的问题都会给大家分析到,还望可以解决大家的问题,下面我们就开始吧!

2026年10月10日 22:00

html全部居中代码(怎么让网页居中显示,html如何让网页居中)

html全部居中代码(怎么让网页居中显示,html如何让网页居中)

大家好,今天小编来为大家解答以下的问题,关于html全部居中代码,怎么让网页居中显示,html如何让网页居中这个很多人还不知道,现在让我们一起来看看吧!

2026年10月10日 21:10

最近更新

西数5000aakx(西数WD-5000AAKX-001CAO和西数800AAJS-00WAAO哪个做安装系统盘比较好)
2026-10-11 08:30:05 浏览:0
热门文章

标签列表