请问如何在文件中往前面写数据,万分感谢

bobqi 2000-11-16 12:48:00
我有如下程序
....
fpos_t pos=0;;
FILE *fp;
if((fp=fopen(".\t2.htm","a+"))==NULL){
fp = fopen(".\t2.htm","w");
}
rewind(fp);
fseek(fp,0L,SEEK_SET);
fsetpos(fp,&pos);
.....
我用了以上方法将文件指针定位到头
可是我再用fprintf方法向文件写数据时,确没有办法写在前面,
只能在文件的后面添加


...全文
181 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
george77 2000-11-16
  • 打赏
  • 举报
回复
先将文件中的内容读到string1中,再生成一个空间足够大的string2,将你要写的新内容和string1都放到string2中,再将string2写入文件。
bobqi 2000-11-16
  • 打赏
  • 举报
回复
To hotyei & zhq2000
thanx a lots
因为我主要是在一个CGI程序中进行文件操作,
hotyei说的\符号我是用\\的,编译运行都很正常。
因为程序不是从我那粘贴过来的,是手误。
由于数据量的不断增大,所以不行。
hotyei 2000-11-16
  • 打赏
  • 举报
回复
首先,你的打开文件名好像不太正确,因为\符号在C中用\\的。第二,打开属性a已经可以创建文件的了,你下面再加个w就画蛇添足了。回到正确,你可以通过下面的方法做到,下面假设你的文件不太大。
1)计算出你要(添加的数据+原文件大小)。
2)用alloc函数(可能记错了,我太久没用DOS了)分配一段同样大小的内存。
3)将添加的数据以及原文件的内容写到这段内容中
4)将内容写入文件
5)关闭文件并结束
zhq2000 2000-11-16
  • 打赏
  • 举报
回复
文件操作就是这样的。

试试这个:
1.把t2.htm改名t2tmp.htm
2.创建一名为t2.htm的文件
3.写入新数据
4.打开t2tmp.htm
5.读t2tmp.htm的内容,写进t2.thm
6.关闭 t2tmp.htm 及 t2.htm
7.删除t2tmp.htm

8.如再要加入新数据,重复1--7

69,382

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧