FatFs下目录扫描出现问题了,高手帮忙啊

2019-03-25 20:33发布

在读取文件目录时,调用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;
}
  此帖出自小平头技术问答
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。