在读取文件目录时,调用sprintf函数时,总是出错,不知问题在哪里,高手帮忙啊。
/************************************************************************************** * FunctionName : AppScanFiles() * Description : 扫描文件 * EntryParameter : path - 路径 * ReturnValue : 成功返回-0;失败返回-1 **************************************************************************************/ FRESULT AppScanFiles(CHAR* path) { FATFS fs; /*Work area (file system object) for logical drive*/ FRESULT res; FILINFO fno; DIR dir; int length; CHAR *fn; CHAR *pathName;
#if _USE_LFN static char lfn[_MAX_LFN * (_DF1S ? 2 : 1) + 1]; fno.lfname = lfn; fno.lfsize = sizeof(lfn); #endif
f_mount(0, &fs); // 一定不能少
res = f_opendir(&dir, path); // 打开目录 if (res == FR_OK) { length = 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) // Directory { sprintf(&path[length], "/%s", fn); //调用时出错! res = AppScanFiles(path); if (res != FR_OK) break; path[length] = 0; } else { UARTSendString(fn); // 串口输出文件名 } } }
f_mount(0, 0); return res; }
|