for ( c = 0; c < 254; c ++ ) { i = mCopyCodeStringToIRAM( mCmdParam.Open.mPathName, pCodeStr ); mCmdParam.Open.mPathName[ i ] = c; i = CH375FileOpen( ); if ( i == ERR_MISS_FILE ) break; if ( i == ERR_FOUND_NAME ) { printf( " match file %03d#: %s\n",(unsigned int)c, mCmdParam.Open.mPathName ); continue; } else { mStopIfError( i ); break; } } 問下:這個搜索前254個文件的程序段, 文件名及其完整路徑是不是變了,如搜索DATE1 開頭的所有文件, 是不是變成了\TODAY1.*\x0這種形式的????
你不用擔(dān)心這個,mCmdParam.Open.mPathName[ i ] = c;是一個枚舉序號.庫里面檢測到*號就認(rèn)為結(jié)束了.所以我們文檔里已經(jīng)說明*后不能有文件名了.
printf( " match file %03d#: %s\n",(unsigned int)c,mCmdParam.Open.mPathName );
那么printf輸出的路徑名是怎么樣的?因為上面mCmdParam.Open.mPathName[ i ] = c;改變了文件路徑的內(nèi)容
printf只是用來查看mCmdParam.Open.mPathName中的值,沒別的用途
知道了,謝謝! 我還問下搜索和枚舉文件名的應(yīng)用--示例EXAM13中有兩中方法來枚舉文件名,第二中方法: /* V2.8, V2.9, V3.0及以上版本的子程序庫 */ UINT8 ListFile( void ) // 輸入?yún)?shù)mCmdParam.Open.mPathName[]為目錄名字符串,形式與文件名相同,單個斜線則代表根目錄 { UINT16 ListCount=0; /* 僅用于計數(shù) */ UINT8 status, i, c; P_FAT_DIR_INFO mFileDir; printf( "List Directory: %s\n", mCmdParam.Open.mPathName ); /* 顯示目錄名 */ status = CH375FileOpen( ); /* 打開目錄 */ if ( status == ERR_SUCCESS ) { /* 成功打開文件 */ printf( "This is a file, not directory\n" ); status = ERR_MISS_DIR; } else if ( status == ERR_OPEN_DIR ) { /* 成功打開目錄 */ while ( 1 ) { /* 依次處理 */ mCmdParam.ReadX.mSectorCount = 1; /* 處理一個扇區(qū) */ mCmdParam.ReadX.mDataBuffer = FILE_DATA_BUF_ADDR; /* 緩沖區(qū) */ status = CH375FileReadX( ); /* 讀取當(dāng)前目錄項所在的扇區(qū) */ if ( status != ERR_SUCCESS ) break; /* 操作失敗 */ if ( mCmdParam.Read.mSectorCount == 0 ) break; /* 目錄結(jié)束 */ mFileDir = FILE_DATA_BUF_ADDR; for ( i = mCmdParam.Read.mSectorCount * CH375vSectorSize / sizeof( FAT_DIR_INFO ); i != 0; i --, mFileDir ++ ) { /* 計數(shù)FDT表項數(shù) */ c = mFileDir -> DIR_Name[0]; /* 檢查文件名首字節(jié) */ if ( c == 0 ) break; /* 文件目錄項結(jié)束 */ else if ( c == 0xE5 ) continue; /* 該目錄項已被刪除則跳過 */ else if ( c == 0x05 ) mFileDir -> DIR_Name[0] = i = 0xE5; if ( ( mFileDir -> DIR_Attr & ATTR_VOLUME_ID ) == 0 ) { /* 不是卷標(biāo)名(有可能是長文件名的一部分) */ ListCount++; if ( mFileDir -> DIR_Attr & ATTR_DIRECTORY ) { /* 目錄,不能進行遞歸處理,除非備份很多內(nèi)部變量 */ printf( "Found %4d# directory, name: ", ListCount ); /* 顯示計數(shù) */ } else { /* 文件 */ printf( "Found %4d# file, name: ", ListCount ); /* 顯示計數(shù) */ } for ( c = 0; c != 11; c ++ ) { /* 顯示搜索到的文件名,前11個字符為文件名 */ printf( "%c", mFileDir -> DIR_Name[ c ] ); } printf( "\n" ); } } } } CH375FileClose( ); /* 打開目錄用完后必須關(guān)閉 */ return( status ); /* 目錄結(jié)束則返回ERR_SUCCESS,或者出錯時返回出錯代碼 */ }
這個方法應(yīng)該也支持FAT32把??
支持的.