
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结构体
这样操作后文件中有几个结构体呢? 展开
fseek(fp,2*sizeof(struct book),SEEK_SET);
fwrite(&Book,sizeof(struct book),1,fp);
若文件中有5个struct book结构体
这样操作后文件中有几个结构体呢? 展开
6个回答
展开全部
fwrite函数是覆盖而不是插入。
只要打开文件时知名支持写操作,那么使用fwrite函数时均是覆盖模式,而不会插入。
即在当前位置写入数据,后续数据并不会依次后移,而是直接覆盖。
比如,如果文件中有数据123456789,在3的位置写入字符abc,那么结果为
12abc6789。
如果要实现插入效果,可以将后续数据读到内存,然后写入要写的数据,再写入原本读出的数据。
只要打开文件时知名支持写操作,那么使用fwrite函数时均是覆盖模式,而不会插入。
即在当前位置写入数据,后续数据并不会依次后移,而是直接覆盖。
比如,如果文件中有数据123456789,在3的位置写入字符abc,那么结果为
12abc6789。
如果要实现插入效果,可以将后续数据读到内存,然后写入要写的数据,再写入原本读出的数据。
展开全部
要看写指针当前的位置,如果说写指针在文件头就会覆盖。
追问
我靠,都写的很明白了
fseek(fp,2*sizeof(struct book),SEEK_SET);
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
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);//写入仅仅一个结构体;
所以,操作后,有三个结构体
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语言的环境变化太大了。
最好的方法是:编写一个小程序,亲自试一试。
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
覆盖,他还是5个
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
覆盖
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询
广告 您可能关注的内容 |