硬汉嵌入式论坛

 找回密码
 立即注册
查看: 615|回复: 3
收起左侧

[FatFs] 寻找最新的匹配文件,怎么搞?

[复制链接]

334

主题

2032

回帖

3039

积分

版主

Rank: 7Rank: 7Rank: 7

积分
3039
发表于 2023-8-28 08:42:04 | 显示全部楼层 |阅读模式
问题描述:需要在根目录下查找指定文件,匹配文件名的前n位。 由于可能找到几个匹配的文件,所以需要确定最新日期的那个文件。

本来的代码是参考Fatfs的示例,可惜只能找到最老日期的那个匹配文件,文件名存储在AppFileName。应该怎么改呢?
[C] 纯文本查看 复制代码
fr = f_findfirst(&dj, &fno, "", "target*.user"); /* Start to search for "target*.user" files */

    while (fr == FR_OK && fno.fname[0]) 
      {         /* Repeat while an item is found */
      //  printf("%s\n", fno.fname);                /* Print the object name */
      if(strncmp(fno.fname,AppFileName,20)==0)
        {        //找到了文件
          strcpy(AppFileName,fno.fname);
        break; //找到了,就退出查找。
        }
       else  fr = f_findnext(&dj, &fno);               /* 没找到,Search for next item */
    }

    f_closedir(&dj);



回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106660
QQ
发表于 2023-8-28 09:39:52 | 显示全部楼层
不要找到就break,应该浏览往所有文件了再退出,是不是就正常了。-
回复

使用道具 举报

334

主题

2032

回帖

3039

积分

版主

Rank: 7Rank: 7Rank: 7

积分
3039
 楼主| 发表于 2023-8-28 09:56:23 | 显示全部楼层
本帖最后由 caicaptain2 于 2023-8-28 10:51 编辑
eric2013 发表于 2023-8-28 09:39
不要找到就break,应该浏览往所有文件了再退出,是不是就正常了。-

没有标志位来判断寻找了全部文件啊。。。

以前把“break”换成continue,结果成了死循环出不来。

回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106660
QQ
发表于 2023-8-28 13:59:14 | 显示全部楼层
仅这样,符合调节的全部打印出来。

[C] 纯文本查看 复制代码
void find_image_file (void)
{
    FRESULT fr;     /* Return value */
    DIR dj;         /* Directory object */
    FILINFO fno;    /* File information */

    fr = f_findfirst(&dj, &fno, "", "????????.JPG"); /* Start to search for photo files */

    while (fr == FR_OK && fno.fname[0]) {         /* Repeat while an item is found */
        printf("%s\n", fno.fname);                /* Print the object name */
        fr = f_findnext(&dj, &fno);               /* Search for next item */
    }

    f_closedir(&dj);
}



回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2024-4-28 01:58 , Processed in 0.274154 second(s), 25 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表