[求助]向文件追加数据后出现乱码

在读出原文件后向其追加数据出现乱码。程序如下: i = CH375FileQuery( ); //查询当前文件的信息 NewSize=CH375vFileSize+NewSize;//计算文件长度=原文件长度+追加数据长度 mCmdParam.Locate.mSectorOffset = 0xffffffff; //移到文件的尾部,以扇区为单位,如果原文件是3字节,则从CH375vSectorSize字节开始添加 i = CH375FileLocate( ); mCmdParam.Write.mSectorCount = 2; CH375FileWrite(); //在原文件的后面添加数据

出现乱码的情况是什么情况?你要追加的数据追加上去了吗?如果已经追加上去了,后面出现了乱码则很有可能是你更新文件长度时,文件长度更新的不对.


数据能加上去。只是有时读出来的数据长度不对。


这个就需要看下你的程序上面,首先一个在使用LOCATE的函数的时候,你需要注意在跳转到文件尾部的话,那么,只会跳到整扇区的位置,这样的话,在你往下写数据的时候,就有可能把不是整扇区的部分数据给丢掉.而你在更新文件长度的时候就可能出现实际的文件长度并不是你实际写下去的文件长度,可能会出错.


请问那该怎么做?


实际操作的时候你可以先把文件末尾的数据先读进来,然后在把你要的数据和最后不满一个扇区的数据组合成一个整扇区,在写下去就可以了.


不能跳过未满的扇区,直接从下一扇区写进去吗?


不可以,即使可以的话,在FAY表的链接上面也会出问题,最后会导致文件损坏.或者你写数据的时候可以按照字节方式来进行写,这样的话就可以直接跳到文件的真正的尾部,但是不允许你按照扇区来进行读写数据.


只有登录才能回复,可以选择微信账号登录