用CH376FileOpen()這個函數(shù)打開文件,如果文件名字是未知的怎么辦 , 這個函數(shù)的參數(shù)能不能是字符數(shù)組名? 比如我得到U盤的一個文件名存在數(shù)組a中,給a前面加上\\后得到數(shù)組b,這個數(shù)組b為什么做參數(shù) 不能打開文件,如果必須把文件全名打上才能打開,那也太不好用了吧
如果未知文件名,那么可以采用枚舉的方式尋找你需要打開的文件。還有就是你的一個文件名存儲在數(shù)組A中,則加入到B數(shù)組中的話,那么需要復制的時候?qū)數(shù)組中文件名最后的數(shù)據(jù)填寫為0X00,表示文件結束。否則會出現(xiàn)打開文件的時候返回找不到此文件的錯誤。
怎么枚舉呢 MAX13上的全部枚舉 沒大看懂,我就想枚舉一類 或者兩類的文件 比如TXT bmp文件,然后得到文件名在液晶屏上顯示,有沒有類似的程序,貼個看看
“*”表示枚舉當前目錄下面的所有文件; “USB*” 表示枚舉當前目錄下面的所有以 USB 開頭的文件名; 枚舉流程可以參考如下: strcpy( buf, "\\C51\\CH376*" ); /* CH376HFT.C文件不存在則列出\C51子目錄下的以CH376開頭的文件 */ printf( "List file %s\n", buf ); s = CH376FileOpenPath( buf ); /* 枚舉多級目錄下的文件或者目錄,輸入緩沖區(qū)必須在RAM中 */ while ( s == USB_INT_DISK_READ ) { /* 枚舉到匹配的文件 */ CH376ReadBlock( buf ); /* 讀取枚舉到的文件的FAT_DIR_INFO結構,返回長度總是sizeof( FAT_DIR_INFO ) */ pDir = (P_FAT_DIR_INFO)buf; /* 當前文件目錄信息 */ if ( pDir -> DIR_Name[0] != '.' ) { /* 不是本級或者上級目錄名則繼續(xù),否則必須丟棄不處理 */ if ( pDir -> DIR_Name[0] == 0x05 ) pDir -> DIR_Name[0] = 0xE5; /* 特殊字符替換 */ pDir -> DIR_Attr = 0; /* 強制文件名字符串結束以便打印輸出 */ printf( "*** EnumName: %s\n", pDir -> DIR_Name ); /* 打印名稱,原始8+3格式,未整理成含小數(shù)點分隔符 */ } xWriteCH376Cmd( CMD0H_FILE_ENUM_GO ); /* 繼續(xù)枚舉文件和目錄 */ // xEndCH376Cmd( ); s = Wait376Interrupt( ); }
只所以要求你全部枚舉是因為每次枚舉之后都會將文件名返回給你,然后你根據(jù)返回的文件名尋找文件名的后綴是否為“.TXT\0”“.BMP\0”這個不就實現(xiàn)你要的要求了嗎?