在C中使用通配符查找文件名

时间:2018-04-09 22:09:29

标签: c linux wildcard

我需要在C程序中使用*找到文件的名称。特定文件夹中只有一个文件的扩展名为.UBX。我可以在终端中执行此操作,但它在C中不起作用。任何人都可以给我示例代码来执行此操作吗?

//There is exactly 1 file that ends in .UBX
#define FILE_TO_SEND    "/home/root/logs/*.UBX"

fd = open(FILE_TO_SEND, O_RDONLY);

1 个答案:

答案 0 :(得分:3)

这应该可以解决问题:

#include <glob.h>
#include <stdlib.h>
#include <fcntl.h>

#define FILE_TO_SEND "/home/root/logs/*.UBX"

int
main (void)
{
    glob_t globbuf;

    glob(FILE_TO_SEND, 0, NULL, &globbuf);

    if (globbuf.gl_pathc > 0)
    {
        int fd = open(globbuf.gl_pathv[0], O_RDONLY);

        // ...
    }

    globfree(&globbuf);

    return 0;
}