各位牛人,菜鸟我最近在弄fatfs的文件遍历遇到一个问题.....f_readdir这个函数 读 长文件名没有问题,,,,,但读短文件名时 其中几个字符顺序颠倒,或者稍长一点的8.3格式的就只读前面两三个字符
FRESULT scan_files (char* path)
{
FRESULT res;
FILINFO fno;
DIR dir;
int i;
char *fn,*p;
FATFS fs;
static char lfn[_MAX_LFN + 1];//(_DF1S ? 2 : 1)
fno.lfname = lfn;
fno.lfsize = sizeof(lfn);
f_mount(0, &fs);
res = f_opendir(&dir, path);
if (res == FR_OK) {
i = strlen(path);
for (;;) {
res = f_readdir(&dir, &fno);
if (res != FR_OK || fno.fname[0] == 0) break;
if (fno.fname[0] == '.') continue;
#if _USE_LFN
fn = *fno.lfname ? fno.lfname : fno.fname;
#else
fn = fno.fname;
#endif
if (fno.fattrib & AM_DIR) {
//sprintf(&path, "/%s", fn);
// res = scan_files(path);
//if (res != FR_OK) break;
//path = 0;
} else {
//printf("%s/%s\n", path, fn);
//if(fn=="789456")p++;
}
//fno.fname={"0000000000"};
}
}
f_mount(0, NULL);
return res;
}
比如读"123.txt"就读出了"123txt.T", "123456.txt"读出“123” 。。。。。。
|