鱼C论坛

 找回密码
 立即注册
查看: 1563|回复: 9

数据文件的修改

[复制链接]
发表于 2014-11-23 05:39:10 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
假如有一个数据文件,里面记录了100条记录,现在想修改第50条记录,有什么好的方法(c的)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2014-11-23 10:27:42 | 显示全部楼层
1. 把100条记录全部读到一个C语言的记录数组里
2.修改第50条记录
3.把这个记录数组覆盖原先的数据文件
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-11-23 12:56:47 | 显示全部楼层
仰望天上的光 发表于 2014-11-23 10:27
1. 把100条记录全部读到一个C语言的记录数组里
2.修改第50条记录
3.把这个记录数组覆盖原先的数据文件

如果数据量比较大的话,速度是不是很慢?有什么更好的方法吗?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2014-11-23 14:33:51 | 显示全部楼层
xiawb 发表于 2014-11-23 12:56
如果数据量比较大的话,速度是不是很慢?有什么更好的方法吗?

用文件的弊端就在这里,这个是处理单个文件的一般性方法,没有什么其它简单方法可以明显好于这个方法了。非要提高速度的话,可以用多个文件存储打数据,或者干脆用数据库。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2014-11-23 20:00:57 | 显示全部楼层
打开这个文件,找到第50条记录,修改它,再保存,如果你的文件格式规范的话,可通过计算直接定位第50条记录,并修改它,或者使用数据库
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-11-24 05:53:06 | 显示全部楼层
本帖最后由 xiawb 于 2014-11-24 05:54 编辑
风之残月 发表于 2014-11-23 20:00
打开这个文件,找到第50条记录,修改它,再保存,如果你的文件格式规范的话,可通过计算直接定位第50条记录 ...

那,用什么方式打开文件呢?r,w,a中怎么选?是否仍然需要对整个文件内容进行读取?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2014-11-24 14:11:55 | 显示全部楼层
xiawb 发表于 2014-11-24 05:53
那,用什么方式打开文件呢?r,w,a中怎么选?是否仍然需要对整个文件内容进行读取?

既然是要修改的话用“w”,是否需要对整个文件内容进行存取要看你的数据是否存放规范,规范的话可以计算出来,直接定位、修改,然后保存
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-11-24 20:16:52 | 显示全部楼层
风之残月 发表于 2014-11-24 14:11
既然是要修改的话用“w”,是否需要对整个文件内容进行存取要看你的数据是否存放规范,规范的话可以计算 ...

w不是先删除原文件的吗?是否意味着原来的100条记录会被删除呢?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2014-11-25 08:26:13 | 显示全部楼层
那是你单独使用了“w”,对于文本文件,可以使用“rw+”,对于二进制文件,可以使用“wb+”,具体用法看fopen()函数
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-11-25 15:59:51 | 显示全部楼层
本帖最后由 xiawb 于 2014-11-25 16:02 编辑
风之残月 发表于 2014-11-25 08:26
那是你单独使用了“w”,对于文本文件,可以使用“rw+”,对于二进制文件,可以使用“wb+”,具体用法看fop ...

谢谢,我原来一直没明白r+的意思,现在明白,r+可以在原来的基础上直接修改.
但好象用w+有问题吧,好象会先删除原来的内容的.

r+具有读写属性,从文件头开始写,保留原文件中没有被覆盖的内容;

w+具有读写属性,写的时候如果文件存在,会被清空,从头开始写。


想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-25 10:50

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表