用CH376FileOpen()这个函数打开文件,如果文件名字是未知的怎么办 , 这个函数的参数能不能是字符数组名? 比如我得到U盘的一个文件名存在数组a中,给a前面加上\\后得到数组b,这个数组b为什么做参数 不能打开文件,如果必须把文件全名打上才能打开,那也太不好用了吧
如果未知文件名,那么可以采用枚举的方式寻找你需要打开的文件。还有就是你的一个文件名存储在数组A中,则加入到B数组中的话,那么需要复制的时候将A数组中文件名最后的数据填写为0X00,表示文件结束。否则会出现打开文件的时候返回找不到此文件的错误。
怎么枚举呢 MAX13上的全部枚举 没大看懂,我就想枚举一类 或者两类的文件 比如TXT bmp文件,然后得到文件名在液晶屏上显示,有没有类似的程序,贴个看看
“*”表示枚举当前目录下面的所有文件; “USB*” 表示枚举当前目录下面的所有以 USB 开头的文件名; 枚举流程可以参考如下: strcpy( buf, "\\C51\\CH376*" ); /* CH376HFT.C文件不存在则列出\C51子目录下的以CH376开头的文件 */ printf( "List file %s\n", buf ); s = CH376FileOpenPath( buf ); /* 枚举多级目录下的文件或者目录,输入缓冲区必须在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] != '.' ) { /* 不是本级或者上级目录名则继续,否则必须丢弃不处理 */ if ( pDir -> DIR_Name[0] == 0x05 ) pDir -> DIR_Name[0] = 0xE5; /* 特殊字符替换 */ pDir -> DIR_Attr = 0; /* 强制文件名字符串结束以便打印输出 */ printf( "*** EnumName: %s\n", pDir -> DIR_Name ); /* 打印名称,原始8+3格式,未整理成含小数点分隔符 */ } xWriteCH376Cmd( CMD0H_FILE_ENUM_GO ); /* 继续枚举文件和目录 */ // xEndCH376Cmd( ); s = Wait376Interrupt( ); }
只所以要求你全部枚举是因为每次枚举之后都会将文件名返回给你,然后你根据返回的文件名寻找文件名的后缀是否为“.TXT\0”“.BMP\0”这个不就实现你要的要求了吗?