今天又碰到不懂的的地方啦,我好菜哦

1。 printf( "Open\n" ); memcpy( mCmdParam.Open.mPathName, "\\C51\\CH375HFT.C", MAX_PATH_LEN ); i = ExecCommand( CMD_FileOpen, MAX_PATH_LEN );

這里打開指定的文件時(shí),memcpy指定復(fù)制的長(zhǎng)度是MAX_PATH_LEN??前面MAX_PATH_LEN定義為32了, 那豈不是把\\C51\\CH375HFT.C 復(fù)制完以后繼續(xù)復(fù)制0字符,這樣不會(huì)出錯(cuò)么? ======================================== 2 for ( i = 0; i < MAX_PATH_LEN - 1; i ++ ) if ( mCmdParam.Enumer.mPathName[ i ] == 0 ) break; mCmdParam.Enumer.mPathName[ i ] = c; i = ExecCommand( CMD_FileEnumer, i+1 );

這里參數(shù)長(zhǎng)度怎么會(huì)是i+1呢? mpathname數(shù)組里第i個(gè)元素已經(jīng)是結(jié)束符了,所以參數(shù)長(zhǎng)度應(yīng)該是i吧 ========================================

3 fileopen以后如果沒找到的搜索程序有一段不明白 其中strcpy( DATA_BUF, "Note: \xd\n原本是打算將/C51/CH375HFT.C文件中的小寫字母轉(zhuǎn)成大寫后寫入新的文件,但是找不到這個(gè)文件\xd\n" ); 是接在搜索循環(huán)for ( c = 0; c < 255; c ++ ) { /* 最多搜索前255個(gè)文件 */ ... } 后面的。 如果FileEnumer執(zhí)行成功,等到c!<255時(shí)也會(huì)退出循環(huán),接下來就執(zhí)行strcpy( DATA_BUF, "Note: \xd\n原本是打算將/C51/CH375HFT.C文件中的小寫字母轉(zhuǎn)成大寫后寫入新的文件,但是找不到這個(gè)文件\xd\n" ); 可是明明已經(jīng)搜索成功了阿 ,這里這樣是什么意思 ========================================

4 這里還是沒弄明白 NewSize = strlen( DATA_BUF ); /* 新文件的長(zhǎng)度 */ SecCount = ( NewSize + 511 ) >> 9; /* (NewSize+511)/512, 計(jì)算文件的扇區(qū)數(shù),因?yàn)樽x寫是以扇區(qū)為單位的 */ 為什么NEWSIZE要+511呢? 有人說時(shí)湊扇區(qū)數(shù)? 不解... -_-+

1,復(fù)制完以后繼續(xù)復(fù)制0字符,這樣不會(huì)出錯(cuò)!庫(kù)里在發(fā)現(xiàn)文件名有\0,結(jié)束符后,后面的字符就忽略了. 2,mCmdParam.Enumer.mPathName[0]-mCmdParam.Enumer.mPathName[ i ],總共不是i+1個(gè)字節(jié)數(shù)據(jù)嗎! 3,在沒找到想要的文件后,將其他文件枚舉,然后輸出,然后將strcpy( DATA_BUF, "Note: \xd\n原本是打算將/C51/CH375HFT.C文件中的小寫字母轉(zhuǎn)成大寫后寫入新的文件,但是找不到這個(gè)文件\xd\n" ); 寫到新建的文件中. 4,如果文件是512個(gè)字節(jié),那么最后的扇區(qū)數(shù)是(512+511)/512=1, 如果文件是513-1024,那么扇區(qū)數(shù)是((513_1023)+511)/512=2,


謝謝你, 我還有新問題哦


只有登錄才能回復(fù),可以選擇微信賬號(hào)登錄

国产91精品新入口,国产成人综合网在线播放,九热这里只有精品,本道在线观看,美女视频a美女视频,韩国美女激情视频,日本美女pvp视频