fwrite与fread(关于C/C++里FILE的fwrite和fread怎么用)

本文目录
关于C/C++里FILE的fwrite和fread怎么用
fseek找到读写的位置
fread从流中读指定_个数的字符,原型是size_t
fread(void
ptr,
size_t
size,
size_t
n,
FILE
*stream);参数ptr是保存读取的数据,void的指针可用任何类型的指针来替换,如char*、int
等等来替换;size是每块的字节数;n是读取的块数,如果成功,返回实际读取的块数(不是字节数),本函数一般用于二进制模式打开的文件中_
fwrite
与fread对应,向流中写指定的数据,原型是size_t
fwrite(const
void
*ptr,
size_t
size,
size_t
n,
FILE
*stream);参数ptr是要写入的数据指针,void的指针可用任何类型的指针来替换,如char*、int
*等等来替换;size是每块的字节数;n是要写的块数,如果成功,返回实际写入的块数(不是字节数),本函数一般用于二进制模式打开的文件中**
fread和fwtrite用法.
scanf("%s%d%d%s",pp-》name,&pp-》num,&pp-》age,pp-》addr);//为什么字符串地址引用不用&
&pp-》num,&pp-》age这两个是整型,所以要用&。pp-》addr,pp-》name是字符组,其表示的就该字符数组的首地址,所以没必要用&(取地址符)。
fwrite(pp,sizeof(struct stu),2,fp);sizeof()是获取结构体struct stu的字节数。
fread()和fwrite()函数的问题
fwrite(&k,sizeof(int),1,fp)
k 是记录的个数,
本句是在文件中“第一个字”写入 一整形数标记了本文件中总的记录的个数
是在第一个字位置,当然不可以放到文件尾,在读如程序部分,首先读出该整形
数
在void loaddate() 中
fread(&k,sizeof(int),1,fp); //读取之前成功写入的次数k。
如果将 k write 到 文件尾 ,失去了意义,并且读出程序也需要修改
读出程序如果不能在开始判断出记录的个数,必须一次次检测直到读出遇到文件尾或是失败
不记录k 也可以家解决读取个数在读取前知道的问题
loaddate()中 使用
fseek(fp,0,SEEK_END);
long L=ftell(fp);
k=L/sizeof(cz);
fseek(fp,0,SEEK_SET);

更多文章:
dos命令清屏(Windows DOS内部命令详解04——del、ren、cls、ver、date、time)
2026年11月6日 15:40
constantly的用法及词组(英语时态对应的时间状语都有哪些)
2026年11月6日 15:20
sql2016安装后如何打开(怎么打开sql server 2016 管理工具)
2026年11月6日 15:10
arcgis怎么设置文本框样式?用JS怎么实现一个把一个文本框中的选中内容加粗,效果基本上和编辑器的加粗效果相同急需
2026年11月6日 10:50





