文件中直接修改数据块数据

文件中直接修改数据块数据

.

.

         如果想要修改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是以文本文件方式打开,默认是tso不必须写。

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值