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

发布网友 发布时间:2022-04-26 23:35

我来回答

5个回答

热心网友 时间:2022-06-20 05:49

fwrite函数是覆盖而不是插入。

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

12abc67。
如果要实现插入效果,可以将后续数据读到内存,然后写入要写的数据,再写入原本读出的数据。

热心网友 时间:2022-06-20 05:49

要看写指针当前的位置,如果说写指针在文件头就会覆盖。追问我靠,都写的很明白了
fseek(fp,2*sizeof(struct book),SEEK_SET);

热心网友 时间:2022-06-20 05:49

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语言的环境变化太大了。
最好的方法是:编写一个小程序,亲自试一试。

热心网友 时间:2022-06-20 05:50

覆盖,他还是5个

热心网友 时间:2022-06-20 05:51

覆盖

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com