数据文件的修改
假如有一个数据文件,里面记录了100条记录,现在想修改第50条记录,有什么好的方法(c的) 1. 把100条记录全部读到一个C语言的记录数组里2.修改第50条记录
3.把这个记录数组覆盖原先的数据文件 仰望天上的光 发表于 2014-11-23 10:27
1. 把100条记录全部读到一个C语言的记录数组里
2.修改第50条记录
3.把这个记录数组覆盖原先的数据文件
如果数据量比较大的话,速度是不是很慢?有什么更好的方法吗? xiawb 发表于 2014-11-23 12:56
如果数据量比较大的话,速度是不是很慢?有什么更好的方法吗?
用文件的弊端就在这里,这个是处理单个文件的一般性方法,没有什么其它简单方法可以明显好于这个方法了。非要提高速度的话,可以用多个文件存储打数据,或者干脆用数据库。 打开这个文件,找到第50条记录,修改它,再保存,如果你的文件格式规范的话,可通过计算直接定位第50条记录,并修改它,或者使用数据库 本帖最后由 xiawb 于 2014-11-24 05:54 编辑
风之残月 发表于 2014-11-23 20:00
打开这个文件,找到第50条记录,修改它,再保存,如果你的文件格式规范的话,可通过计算直接定位第50条记录 ...
那,用什么方式打开文件呢?r,w,a中怎么选?是否仍然需要对整个文件内容进行读取? xiawb 发表于 2014-11-24 05:53
那,用什么方式打开文件呢?r,w,a中怎么选?是否仍然需要对整个文件内容进行读取?
既然是要修改的话用“w”,是否需要对整个文件内容进行存取要看你的数据是否存放规范,规范的话可以计算出来,直接定位、修改,然后保存 风之残月 发表于 2014-11-24 14:11
既然是要修改的话用“w”,是否需要对整个文件内容进行存取要看你的数据是否存放规范,规范的话可以计算 ...
w不是先删除原文件的吗?是否意味着原来的100条记录会被删除呢? 那是你单独使用了“w”,对于文本文件,可以使用“rw+”,对于二进制文件,可以使用“wb+”,具体用法看fopen()函数 本帖最后由 xiawb 于 2014-11-25 16:02 编辑
风之残月 发表于 2014-11-25 08:26
那是你单独使用了“w”,对于文本文件,可以使用“rw+”,对于二进制文件,可以使用“wb+”,具体用法看fop ...
谢谢,我原来一直没明白r+的意思,现在明白,r+可以在原来的基础上直接修改.
但好象用w+有问题吧,好象会先删除原来的内容的.r+具有读写属性,从文件头开始写,保留原文件中没有被覆盖的内容;w+具有读写属性,写的时候如果文件存在,会被清空,从头开始写。
页:
[1]