| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 3990 人关注过本帖
标题:[求助]文件写操作,怎么删除某指定行
只看楼主 加入收藏
jiaju111
Rank: 1
等 级:新手上路
帖 子:94
专家分:0
注 册:2007-3-27
收藏
 问题点数:0 回复次数:8 
[求助]文件写操作,怎么删除某指定行

问题1:怎么才能在文本文件的开头进行写操作而又不替换掉文本?

比如用ofstream out("000.txt", ofstream::in|ofstream::out)
进行写操作的话会把开头的文本给替换掉
怎么避免替换?

问题2:怎么才能在文本中间进行写操作,或者替换掉文本中间的某一行,而又不改变其他内容?

问题3:怎么删除掉文本中的某一指定行?

大家帮我解决一下啊

谢谢了!

[此贴子已经被作者于2007-6-20 15:56:43编辑过]

搜索更多相关主题的帖子: 文件 删除 
2007-06-19 22:40
野比
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:24
帖 子:1627
专家分:516
注 册:2007-5-24
收藏
得分:0 
你可以用c语言的fseek()函数(stdio.h),...随机读写
要知道, 一个文件打开后有一个位置指针, 指示当前读写位置..
顺序读写时, 读写一个, 系统自动把位置指针移动到下一位置...
用fseek()就可以手动更改..
用法是fseek(FILE*(文件指针),long offset(偏移量),int whence(参考位置))
参考位取值:0 文件开头, 1 当前位置, 2 文件最后..

作用就是将FILE*指定的文件的位置指针从参考位置移动offset字节

移动方向由offset的+/-决定..

另外用rewind()可以将位置指针恢复到文件头..

女侠,约吗?
2007-06-19 23:20
野比
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:24
帖 子:1627
专家分:516
注 册:2007-5-24
收藏
得分:0 
你可以参考这篇文章..
[QUOTE]文件的随机读写

  前面介绍的对文件的读写方式都是顺序读写, 即读写文件只能从头开始,顺序读写各个数据。 但在实际问题中常要求只读写文件中某一指定的部分。 为了解决这个问题可移动文件内部的位置指针到需要读写的位置,再进行读写,这种读写称为随机读写。 实现随机读写的关键是要按要求移动位置指针,这称为文件的定位。文件定位移动文件内部位置指针的函数主要有两个, 即 rewind 函数和fseek函数。

  rewind函数前面已多次使用过,其调用形式为: rewind(文件指针); 它的功能是把文件内部的位置指针移到文件首。 下面主要介绍
fseek函数。

  fseek函数用来移动文件内部位置指针,其调用形式为: fseek(文件指针,位移量,起始点); 其中:“文件指针”指向被移动的文件。 “位移量”表示移动的字节数,要求位移量是long型数据,以便在文件长度大于64KB 时不会出错。当用常量表示位移量时,要求加后缀“L”。“起始点”表示从何处开始计算位移量,规定的起始点有三种:文件首,当前位置和文件尾。
其表示方法如表10.2。
起始点    表示符号(ISO标准)数字表示
──────────────────────────
文件首    SEEK_SET    0
当前位置   SEEK_CUR    1
文件末尾   SEEK_END     2
例如:
fseek(fp,100L,0);其意义是把位置指针移到离文件首100个字节处。还要说明的是fseek函数一般用于二进制文件。在文本文件中由于要进行转换,故往往计算的位置会出现错误。文件的随机读写在移动位置指针之后, 即可用前面介绍的任一种读写函数进行读写。由于一般是读写一个数据据块,因此常用fread和fwrite函数。下面用例题来说明文件的随机读写。
[/QUOTE]

女侠,约吗?
2007-06-19 23:22
jiaju111
Rank: 1
等 级:新手上路
帖 子:94
专家分:0
注 册:2007-3-27
收藏
得分:0 

多谢兄弟指点

正在研究中……


Everything is gonna be okay!
2007-06-20 08:54
jiaju111
Rank: 1
等 级:新手上路
帖 子:94
专家分:0
注 册:2007-3-27
收藏
得分:0 
第2个问题已经解决

求教剩下的两个

谢谢了!

[此贴子已经被作者于2007-6-20 15:58:16编辑过]


Everything is gonna be okay!
2007-06-20 09:01
野比
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:24
帖 子:1627
专家分:516
注 册:2007-5-24
收藏
得分:0 
3.删除...
找到待删除部分的起始和结束位置(A, B位)...从B位开始读取内容.....
写到A位....while(!EOF)...结束...

女侠,约吗?
2007-06-20 19:52
jiaju111
Rank: 1
等 级:新手上路
帖 子:94
专家分:0
注 册:2007-3-27
收藏
得分:0 

这样的话最后会有残余啊

是不?

[此贴子已经被作者于2007-6-20 22:02:58编辑过]


Everything is gonna be okay!
2007-06-20 22:00
野比
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:24
帖 子:1627
专家分:516
注 册:2007-5-24
收藏
得分:0 
你要最后写入EOF啊...

女侠,约吗?
2007-06-20 22:07
jiaju111
Rank: 1
等 级:新手上路
帖 子:94
专家分:0
注 册:2007-3-27
收藏
得分:0 
恩,对

正在实现……

Everything is gonna be okay!
2007-06-20 22:20
快速回复:[求助]文件写操作,怎么删除某指定行
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.017548 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved