關于寫的這個問題:因為我重新?lián)Q上一行漢字的時候是能夠正常寫進去的,直接對緩沖區(qū)buf賦值也是可以正確寫入的,但是我用strcpy這個函數(shù)測試了好多個漢字的寫入,大部分還都能正確寫對的(但是數(shù)據(jù)這兩個字一有就會出錯),而且寫完之后不報錯,可以正常保存關閉文件,但是有一點,一次超過30個以上的字符往文件里寫的話 就寫不進去
但是關于讀的函數(shù)為什么會出現(xiàn)像我11樓所說的那種情況,有可能的原因是什么? 除了11樓處我提出的現(xiàn)象,還有 要求29及以上的字節(jié)的時候,他都只會讀出來28個字節(jié) 要求32個及以上的時候,返回FA,當然屏蔽報錯程序后會顯示出讀出來的28個字節(jié) 只有要求29,30,31的時候才不會報錯,而且能正確讀出28個字節(jié)
打開文件后讀取字節(jié)的過程如下,也只直接copy網(wǎng)站上的程序 mStopIfError( s ); TotalCount = 30; /* 準備讀取總長度 */ printf( "從文件中讀出的前%d個字符是:\n",(UINT16)TotalCount ); while ( TotalCount ) { /* 如果文件比較大,一次讀不完,可以再調用CH376ByteRead繼續(xù)讀取,文件指針自動向后移動 */ if ( TotalCount > sizeof(buf) ) i = sizeof(buf); /* 剩余數(shù)據(jù)較多,限制單次讀寫的長度不能超過緩沖區(qū)大小 */ else i = TotalCount; /* 最后剩余的字節(jié)數(shù) */ s = CH376ByteRead( buf, i, &RealCount ); /* 以字節(jié)為單位讀取數(shù)據(jù)塊,單次讀寫的長度不能超過緩沖區(qū)大小,第二次調用時接著剛才的向后讀 */ mStopIfError( s ); TotalCount -= (UINT8)RealCount; /* 計數(shù),減去當前實際已經(jīng)讀出的字符數(shù) */ for ( s=0; s!=RealCount; s++ ) printf( "%C", buf[s] ); /* 顯示讀出的字符 */ if ( RealCount < i ) { /* 實際讀出的字符數(shù)少于要求讀出的字符數(shù),說明已經(jīng)到文件的結尾 */ printf( "\n" ); printf( "文件已經(jīng)結束\n" ); break; } } printf( "Close\n" ); s = CH376FileClose( FALSE ); /* 關閉文件 */ mStopIfError( s );