| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2079 人关注过本帖
标题:文本操作删除?
只看楼主 加入收藏
SNAKEQX
Rank: 1
等 级:新手上路
帖 子:112
专家分:3
注 册:2006-4-11
收藏
得分:0 
eof好像在那个.h里面有定义,就是-1
单个文件在硬盘中不时连续的么???那为什么windows需要硬盘整理?
2008-04-23 10:55
sunkaidong
Rank: 4
来 自:南京师范大学
等 级:贵宾
威 望:12
帖 子:4496
专家分:141
注 册:2006-12-28
收藏
得分:0 
对于txt本身也不大.我向来是用'\0'结束的..而且文件是逻辑上得问题与物理储存无关...每次用来做数据处理都是用字符串概念..读到字符做不同处理...

学习需要安静。。海盗要重新来过。。
2008-04-23 11:04
hao0716
Rank: 4
等 级:业余侠客
威 望:1
帖 子:354
专家分:224
注 册:2006-4-11
收藏
得分:0 
[bo]以下是引用 [un]SNAKEQX[/un] 在 2008-4-23 10:55 的发言:[/bo]

eof好像在那个.h里面有定义,就是-1
单个文件在硬盘中不时连续的么???那为什么windows需要硬盘整理?

有可能是不连续的 比如windows里文件有簇的概念,一个簇可能是4KB 就是说你的文件最少要占4个KB的空间 如果你是1B 那么分给你的也是4kb
如果你的文件是6KB 那么就要占用两个簇,这两个簇在硬盘上可能是不连续的。
windows的硬盘整理就是要把不连续的簇整理成连续的 否则在读一个文件的时候影响效率
当然硬盘和内存又是两个概念。LZ原意应该是一个很大的文件怎么删除其中的一小块
当然你全拿到内存中修改好放进去是个方法 但影响效率 但怎么直接删除呢 我还没想清楚 咋就没fdel这个函数呢...
期待高手

2008-04-23 12:09
hao0716
Rank: 4
等 级:业余侠客
威 望:1
帖 子:354
专家分:224
注 册:2006-4-11
收藏
得分:0 
csdn上查到的 几乎都是读到内存处理的方法
没有简单的方法删除字符,方法就是,从要删除的位置开始,将字符一个一个的向前复制,然后将文件长度改短,对了再说一句,改短文件时没有标准的,每一种平台都有自己的实现。

2008-04-23 12:21
SNAKEQX
Rank: 1
等 级:新手上路
帖 子:112
专家分:3
注 册:2006-4-11
收藏
得分:0 
我觉得,即使是由FDEL这个函数,他的原理也都是先拿到内存中再改,如果是我编写才操作系统,我绝对不允许操作系统以外的任何软件直接访问硬盘:)

况且,直接修改文件的话,使CPU对硬盘的操作,这种数据交换非常慢,反而会影响效率把:)

我新手,以上只是自己的分析。有错误请指出,并请谅解:)
2008-04-23 12:43
hao0716
Rank: 4
等 级:业余侠客
威 望:1
帖 子:354
专家分:224
注 册:2006-4-11
收藏
得分:0 
他拿到内存的数据肯定和我们的不一样吧 我们拿的比较大哦 这点我也不是太清楚 但人家的读写是汇编的接口 肯定比我们这几个api要快的多
windows上好像不允许程序直接访问硬盘 其实它提供的api也是在他的监视之下嘛 在人家的地盘上混还不是人家说啥你就得做啥
linux上有工具可以 甚至可以读写mbr 不过必须有权限的

2008-04-23 12:57
wrg0709
Rank: 1
来 自:ss
等 级:新手上路
帖 子:81
专家分:0
注 册:2007-12-3
收藏
得分:0 
[bo]以下是引用 [un]hao0716[/un] 在 2008-4-23 12:21 的发言:[/bo]

csdn上查到的 几乎都是读到内存处理的方法
没有简单的方法删除字符,方法就是,从要删除的位置开始,将字符一个一个的向前复制,然后将文件长度改短,对了再说一句,改短文件时没有标准的,每一种平台都有自己的实现。 ...

 我没看见过有向前复制的函数  我试验过 先输入一个字符串进入文件 ,在输入一个字符(想替换里面的某个字符),最终没任何反应
   那我问它怎么会有向前复制的功能即我上面说的替代 ?

程序员的日子就是 泡面+电脑+床
2008-04-23 16:17
daocaorenhe
Rank: 1
等 级:新手上路
帖 子:22
专家分:0
注 册:2008-4-22
收藏
得分:0 
你要对
你要对txt里的内容指针重定位!用指针操作
2008-04-23 22:24
luvi88
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2008-4-23
收藏
得分:0 
嗯。这种问题我也见过。
2008-04-23 23:41
StarWing83
Rank: 8Rank: 8
来 自:仙女座大星云
等 级:贵宾
威 望:19
帖 子:3951
专家分:748
注 册:2007-11-16
收藏
得分:0 
我的实现方法是……将文件再重新写到另外一个文件里面去,删掉的部分不写,然后重命名……Orz……至于硬盘怎样效率怎样……就不是我们考虑的范围了吧……
PS 原来写过这样的程序。就是用的这样变通的方法……不过是读取删除点后面的所有内容存到另外的文件中,然后,向前覆盖……MS不慢的……

如果是写编辑器要注重效率,还是希望能一次读一小块,用合理的数据结构来做……

专心编程………
飞燕算法初级群:3996098
我的Blog
2008-04-24 02:15
快速回复:文本操作删除?
数据加载中...
 
   



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

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