c语言 fwrite函数 是插入还是覆盖

如:fseek(fp,2*sizeof(structbook),SEEK_SET);fwrite(&Book,sizeof(structbook),1,fp);若文件中有... 如:
fseek(fp,2*sizeof(struct book),SEEK_SET);
fwrite(&Book,sizeof(struct book),1,fp);
若文件中有5个struct book结构体
这样操作后文件中有几个结构体呢?
展开
 我来答
风若远去何人留
推荐于2018-05-14 · 知道合伙人互联网行家
风若远去何人留
知道合伙人互联网行家
采纳数:20403 获赞数:450145
专业C/C++软件开发

向TA提问 私信TA
展开全部
fwrite函数是覆盖而不是插入。

只要打开文件时知名支持写操作,那么使用fwrite函数时均是覆盖模式,而不会插入。
即在当前位置写入数据,后续数据并不会依次后移,而是直接覆盖。
比如,如果文件中有数据123456789,在3的位置写入字符abc,那么结果为

12abc6789。
如果要实现插入效果,可以将后续数据读到内存,然后写入要写的数据,再写入原本读出的数据。
翱翔zqq
2012-07-28
知道答主
回答量:14
采纳率:0%
帮助的人:6.8万
展开全部
要看写指针当前的位置,如果说写指针在文件头就会覆盖。
追问
我靠,都写的很明白了
fseek(fp,2*sizeof(struct book),SEEK_SET);
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
镭毅
推荐于2017-12-15 · TA获得超过1394个赞
知道大有可为答主
回答量:1155
采纳率:0%
帮助的人:1128万
展开全部
size_t fwrite(
const void *buffer,
size_t size,
size_t count,
FILE *stream
);

size_t fwrite(
const void *buffer,
size_t size,
size_t count,
FILE *stream
);
Parameters

buffer
Pointer to data to be written.
size

Item size in bytes.
count

Maximum number of items to be written.
stream

Pointer to FILE structure.

从上述定义可以看出:
fseek(fp,2*sizeof(struct book),SEEK_SET);//指针指向第二个结构体后;
fwrite(&Book,sizeof(struct book),1,fp);//写入仅仅一个结构体;

所以,操作后,有三个结构体
追问
就是说后三个都被覆盖了?
追答
应该是这样。但c语言的环境变化太大了。
最好的方法是:编写一个小程序,亲自试一试。
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
江湖三脚猫Django
2012-07-28 · TA获得超过3495个赞
知道大有可为答主
回答量:3333
采纳率:100%
帮助的人:3251万
展开全部
覆盖,他还是5个
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
zhangqinli123
2012-07-28 · 超过11用户采纳过TA的回答
知道答主
回答量:42
采纳率:0%
帮助的人:22.5万
展开全部
覆盖
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 2条折叠回答
收起 更多回答(4)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式