由于本人智商有限,一直不能参透贵公司子程序库中关于文件名操作的相关函数命令。 因此有如下愚蠢问题请教,希望高手能够不吝赐教,小弟万分感激。
贵公司赠送的光盘中 CH375\EVT\PUB\MCS51C\FILELIB4\EXAM1 目录下 CH375HFT.C文件中
mCopyCodeStringToIRAM( mCmdParam.Open.mPathName, "\\C51\\CH375HFT.C" ); i = CH375FileOpen( ); if ( i == ERR_MISS_DIR || i == ERR_MISS_FILE ) { if ( i == ERR_MISS_DIR ) pCodeStr = "\\*"; else pCodeStr = "\\C51\\CH375*"; printf( "List file %s\n", pCodeStr ); for ( c = 0; c < 255; 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; } }
根据程序要求 假如我的U盘中并没有C51文件夹,那么应该显示根目录下的所有文件名 也就是说应执行pCodeStr = "\\*";这句命令 那么在 for ( c = 0; c < 255; c ++ ) 的循环中 每次都先执行 i = mCopyCodeStringToIRAM( mCmdParam.Open.mPathName, pCodeStr ); 也就是说每次 mCmdParam.Open.mPathName中都保存 "//*"这个字符串 那么请问程序是如何区分当前在读哪个文件名呢 而且这句程序 mCmdParam.Open.mPathName[ i ] = c; 意思是文件名称末尾保存当前文件的序号,那么上一句程序并没有看到哪里提示在读哪个文件。 也就是说并没有看到程序: i = mCopyCodeStringToIRAM( mCmdParam.Open.mPathName, pCodeStr ); 哪里有说明那些文件刚才已经读过,那些文件还没有读。
我不知道我的问题又没有问清楚
比如说U盘现在根目录下有3个文件A.TXT和B.TXT和C.TXT这三个文件,但是我不知道文件名 现在我想查找第二个文件的文件名是什么,并把文件名通过串口显示出来 那么我应该如何来做?
小弟诚心求教,在线等答案,希望有高手能够耐心帮我解决问题。