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ù)? 不解... -_-+