1。 printf( "Open\n" ); memcpy( mCmdParam.Open.mPathName, "\\C51\\CH375HFT.C", MAX_PATH_LEN ); i = ExecCommand( CMD_FileOpen, MAX_PATH_LEN );
这里打开指定的文件时,memcpy指定复制的长度是MAX_PATH_LEN??前面MAX_PATH_LEN定义为32了, 那岂不是把\\C51\\CH375HFT.C 复制完以后继续复制0字符,这样不会出错么? ======================================== 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 );
这里参数长度怎么会是i+1呢? mpathname数组里第i个元素已经是结束符了,所以参数长度应该是i吧 ========================================
3 fileopen以后如果没找到的搜索程序有一段不明白 其中strcpy( DATA_BUF, "Note: \xd\n原本是打算将/C51/CH375HFT.C文件中的小写字母转成大写后写入新的文件,但是找不到这个文件\xd\n" ); 是接在搜索循环for ( c = 0; c < 255; c ++ ) { /* 最多搜索前255个文件 */ ... } 后面的。 如果FileEnumer执行成功,等到c!<255时也会退出循环,接下来就执行strcpy( DATA_BUF, "Note: \xd\n原本是打算将/C51/CH375HFT.C文件中的小写字母转成大写后写入新的文件,但是找不到这个文件\xd\n" ); 可是明明已经搜索成功了阿 ,这里这样是什么意思 ========================================
4 这里还是没弄明白 NewSize = strlen( DATA_BUF ); /* 新文件的长度 */ SecCount = ( NewSize + 511 ) >> 9; /* (NewSize+511)/512, 计算文件的扇区数,因为读写是以扇区为单位的 */ 为什么NEWSIZE要+511呢? 有人说时凑扇区数? 不解... -_-+