上次已对U盘的读写功能做了一定的介绍,但还不太全面,故这次再做些补充说明。
之所以不很全面是和程序处理的流程及程序内容相关的,为便于说明这里给出处理的流程图,见图1所示。
上次我们只沿着左侧的分支进行了介绍,那右侧分支呢?
它则是在原有文件的基础上进行内容的追加,然后再显示出文件的前100个字节,其执行效果如图2所示。
那读取的前100个字节又显示在何处呢?
其实并没有任何内容被显示出来,之所以如此是与程序的内容相关的,随着操作的进行此时文件的指针已被移动到了文件的末尾,自然是没有内容可读出的,也就没有任何的内容可供显示。
那此时该添加如何的操作呢?
当然是修改文件指针,这又有2种方法可以达到目的,其一是先关闭文件,然后再打开文件,则文件指针就自然换到文件的首部;另一种方法则是无需关闭文件,只用相应的函数就能把文件指针移动到所需的位置。
第一种方法所用的语句为:
i = CHRV3FileClose( );
mStopIfError( i );
strcpy( (PCHAR)mCmdParam.Open.mPathName, "/C51/NEWFILE.C" ); //设置将要操作的文件路径和文件名/C51/NEWFILE.C
s = CHRV3FileOpen( );
第二种方法所用的语句为:
mCmdParam.ByteLocate.mByteOffset = 0x0; //移到文件的头部
CHRV3ByteLocate( );
其执行的效果则如图3所示,由于其中涉及汉字的读取会出现因读取而导致的异常现象。
本帖最后由 jennyzhaojie 于 2021-3-12 22:21 编辑
Jacktang 发表于 2021-3-12 22:58 两种方法都因为汉字的原因,出现异常吗
与方法不相关,主因是汉字是双字节编码,当截取汉字的一个字节显示时就会出现异常,而截取的是2个字节时则没事。所以与读取时截取的位置有关,而字符是单字节的,所以无论怎样截取只要以字节为单位就没问题。
本帖最后由 jennyzhaojie 于 2021-3-12 23:29 编辑引用: Jacktang 发表于 2021-3-12 22:58 两种方法都因为汉字的原因,出现异常吗
所说的2种方法是解决文件指针移动的问题,而出现异常是与读取时截取的位置有关(对汉字而言,不涉及字符。)
如果你仔细数的话,会说显示的字符数也不是100个,其实这要从程序看,因在程序中使用了换行符等,故字节数到了100,而换行符等是看不见的,但它也占用读取的字节数。
引用: jennyzhaojie 发表于 2021-3-12 23:38 如果你仔细数的话,会说显示的字符数也不是100个,其实这要从程序看,因在程序中使用了换行符等,故字节数 ...
原来这样
谢谢分享
引用: Jacktang 发表于 2021-3-13 07:38 原来这样 谢谢分享