在读取文件目录时,调用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;
}
此帖出自
小平头技术问答
一周热门 更多>