社区
C语言
帖子详情
fwrite函数的问题?
hchack
2005-07-14 11:16:01
当我在文本中的某一行进行插入操作的时候,插入的内容存在了,但是它下面的内容怎么没有了?
...全文
625
10
打赏
收藏
fwrite函数的问题?
当我在文本中的某一行进行插入操作的时候,插入的内容存在了,但是它下面的内容怎么没有了?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
10 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
megaboy
2005-07-14
打赏
举报
回复
to 楼主:
楼主使用w这个标志打开文件,那么不管用fseek把指针移动到哪里,系统都会把原文件内容清空,然后从文件头开始写数据。同样地,如果用了标志a,系统也是不管fseek如何移动指针,而总是从文件末尾开始写数据。
想随机读写文件的话,应该用r+打开文件。
megaboy
2005-07-14
打赏
举报
回复
下面是我回答另一个人的类似问题时所作的回答,给你参考一下,具体操作有些许不同,但原理一样:
楼主的需求是可以做到的,只不过有一点点麻烦而已。假设5515在文件偏移量100处,如果新改写的字符串加上'\0'的字符数量少于5515的字符数量,直接改写就行。如果比5515多,那就要用系统输入输出函数先把文件的长度增加两者的差值,再把后面的数据往后移,空出足够的地方,再写入,简化代码如下:(因为不知道楼主的5515是以int形式写入文件的,还是以四个字符分别写入的,我假设是以5515四个字符写入的)
#include<io.h>
#include<string.h>
int i,iFile;
long lSub,lNewLength,lFileSub,lFileLength;
char string[]="abcdef"; //假设这是改写字符串,并且长度大于5515
char temp;
iFile=open("test.dat",O_RDWR); //以可读可写方式打开文件
lSub=strlen(string)-4+1; //4是5515字符数量,差值包括'\0';
lseek(iFile,0l,SEEK_END);
lFileSub=tell(iFile)-100-4+1; //算出5515后面的字节数量;
lFileLength=filelength(iFile);
lNewlength=lFileLength+lSub;
chsize(iFile,lNewlength); //增加文件test.dat的长度,原文件末尾多出来的lSub个字节会自动
以'\0'填充
for(i=0;i<lFileSub;i++)
{
lseek(iFile,-i-lSub,SEEK_END);
read(&temp,sizeof(char),1,iFile);
lseek(iFile,-i,SEEK_END);
write(&temp,sizeof(char),1,iFile);
} //移动末尾的字节块。本来想一次过用malloc移动整块字节块的,但
想到楼主文件可能很大,不一定能分配到足够的内存,所以还是一
个一个字节地移动。
lseek(iFile,100l,SEEK_SET);
write(string,sizeof(char),strlen(string)+1,iFile);
close(iFile);
hchack
2005-07-14
打赏
举报
回复
fp=fopen(FileName, "w")//打开文件
fseek//定位文件
fwrite//将文件覆盖
但是如果插在数据的中间某一行,那么它下面的数据也没有了
OpenHero
2005-07-14
打赏
举报
回复
打开文件的格式~~~
有追加
有覆盖
有~~~
看打开文件的时候你选择的模式
hchack
2005-07-14
打赏
举报
回复
用什么办法才能不覆盖后面的?
jsjjms
2005-07-14
打赏
举报
回复
系统会把你后面的覆盖的。
junnyfeng
2005-07-14
打赏
举报
回复
插入前需要移动后面的内容,否则就覆盖了
Willpro
2005-07-14
打赏
举报
回复
文件是顺序保存的,从你插入的地方开始WRITE,所以就把你后面的东西覆盖了。插入就是覆盖,要想执行插入,就要先处理保存后面的内容,然后再紧跟写入!
兄弟,插入不是这么简单的!
jsjjms
2005-07-14
打赏
举报
回复
系统会把你后面的覆盖的。
robinzsy
2005-07-14
打赏
举报
回复
不能插入,只能覆盖。
C语言fread
函数
和
fwrite
函数
的用法及其实例[收集].pdf
C语言fread
函数
和
fwrite
函数
的用法及其实例[收集].pdf
C语言fread
函数
和
fwrite
函数
的用法及其实例
C语言fread
函数
和
fwrite
函数
的用法及其实例
fread,
fwrite
函数
的参数2和参数3的正确顺序
fread,
fwrite
的参数2,3顺序 为什么fread读出来的文件大小不对
C语言fread和
fwrite
C语言文件读写
函数
,fread,
fwrite
函数
的使用。 简单实例,仅供参考。
fwrite
写文件.txt
通用的
fwrite
写文件
函数
C语言
69,373
社区成员
243,080
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章