文件中直接修改数据块数据
2013-09-26 11:50
357 查看
文件中直接修改数据块数据
..
如果想要修改txt文件中的某部分数据,还不想把所有的全部读出来之后再修改,则可以通过下面的方式进行:
FILE* fp = fopen("1.txt","rt+"); //打开方式用r+或者rt+
char bufTemp[10];
fseek(fp,2*sizeof(bufTemp),0); //定位
fread(bufTemp,sizeof(bufTemp),1,fp); //读取
//bufTemp[1] = 'b'; //修改
strcpy(bufTemp,"World"); //修改
fseek(fp,-1L*sizeof(bufTemp),SEEK_CUR); //重新定位,回退一个数据块
fwrite(bufTemp,sizeof(bufTemp),1,fp);
fclose(fp);
结果如图:(已经提前写入了若干的Hello)
经过反复的测试发现,在修改读入出来的数据块的局部内容之后、写入文件之前,必须要进行一个fseek()的调用,fseek(fp,-1L*sizeof(bufTemp),SEEK_CUR);保证了数据块能够顺利写入和写入原来的位置,就算不想要写到原来的位置,也得调用fseek(fp,0,SEEK_CUR);,不然数据是不能写入的。
而同时也发现了,如果之前不用fread()读取该块数据,而是仅仅定位之后用fwrite()函数写入自定义的bufTemp,则不用fseek()函数的调用了。
顺便提一下,关于打开方式,这样的情况必须使用”r+” or ”rt+”,因为r是读入,可以保证原来的文件不会被删除,+保证了既可以读也可以写,t是以文本文件方式打开,默认是t,so不必须写。
相关文章推荐
- Linux C函数参考手册(PDF版)
- 用VBScript写合并文本文件的脚本
- 完美解决MSSQL"以前的某个程序安装已在安装计算机上创建挂起的文件操作"
- 使用VBS访问外部文本文件一些方法和脚本实例代码
- C#实现打造气泡屏幕保护效果
- 文本文件编码方式区别
- C 语言基础教程(我的C之旅开始了)[三]
- C 语言基础教程(我的C之旅开始了)[七]
- C/C++ 宏详细解析
- 效率较高的php下读取文本文件的代码[原创]_php技巧_脚本之家
- 用C#生成不重复的随机数的代码
- 在c和c++中实现函数回调
- 浅析C/C++中被人误解的SIZEOF
- PHP通过header实现文本文件下载的代码
- C 语言基础教程(我的C之旅开始了)[六]
- 基于java file 文件操作operate file of java的应用
- MySQL文本文件导入及批处理模式应用说明
- php中用文本文件做数据库的实现方法
- asp.net XML文件操作实现代码