[求助]追写数据乱码

UINT8 i,s; PUINT8 name; PUINT8 buff; PUINT8 PathName;

unsigned char FDname[] = {"06-22"}; unsigned char Fname[] = {"T.TXT"}; unsigned char PutIn[]= {"testing of write the file"}; unsigned char nFname[] = {"/06-22/T.TXT"};

TRISBbits.TRISB0 = 1; /* INT设为输入,监控U盘连接 */

TRISEbits.TRISE0 = 0; TRISEbits.TRISE1 = 0; TRISEbits.TRISE2 = 0; TRISAbits.TRISA0 = 0;

s = mInitCH376Host(); /* 初始化CH376 */ mStopIfError(s);

DelayUS(1); s = CKECK_connect(); /* 检查连接 */ mStopIfError(s);

DelayUS(1); s = CH376DiskMount(); /* U盘初始化 */ mStopIfError(s);

name = &FDname[0]; s = CH376DirCreate( name ); mStopIfError(s);

name = &Fname[0]; s = CH376FileCreate( name ); mStopIfError(s);

buff = &PutIn[0]; s = CH376ByteWrite( buff, sizeof(PutIn), NULL ); mStopIfError(s);

s = CH376FileClose( TURE ); /* 关闭文件,自动计算文件长度,以字节为单位写文件,建议让程序库关闭文件以便自动更新文件长度 */ mStopIfError( s );

PutIn[0] = '1'; PutIn[1] = 'F'; /* 写入数据稍作修改,准备追写 */

PathName = &nFname[0]; s = CH376FileOpenPath( PathName ); mStopIfError(s);

CH376GetFileSize( ); s = CH376ByteLocate( 0xFFFFFFFF ); /* 移动当前文件指针到末尾 */ mStopIfError(s);

s = CH376ByteWrite( buff, sizeof(PutIn), NULL ); mStopIfError(s);

s = CH376FileClose( TURE ); /* 关闭文件,自动计算文件长度,以字节为单位写文件,建议让程序库关闭文件以便自动更新文件长度 */ mStopIfError( s );

以上是我的测试程序。 第一次在文件中写入数据成功, 关闭之后更新。 第二次写入数据后,文件中全部都是乱码。

这是什么原因?


你使用UE或者WINHEX文件看下你写进去的16进制数据是否正确?


写入的16进制数据? 没问题阿。 我第一次写进去是可以的。显示也正确。 我仅仅移动指针再追加数据 然后所有的都乱码了


这是TXT软件本身的问题,你用写字板或UE打开试一下? 解决的话将s = CH376ByteWrite( buff, sizeof(PutIn);NULL )改成: s = CH376ByteWrite( buff, sizeof(PutIn)-1, NULL );试一下?


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