发布网友 发布时间: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
覆盖