1

我正在尝试扩展 *,所以我做了一些研究,似乎 glob 是要使用的函数。就像 linux 一样,当你输入 ls *.c 时,它会返回所有包含 .c 的文件

我已经开始了,所以我知道我需要先 malloc glob_t,所以这里是:

glob_t *globbuf = (glob_t*)malloc(sizeof(glob_t));

在此之后,我不知道如何解决这个问题......通过互联网向我展示了一些示例,但我不太了解它是如何工作的。这就是我想出的:

if(glob("*.c",GLOB_DOOFFS,NULL,globbuf)) {
   // what am i supposed to write in here?}

globbuf->gl_pathv[0] = "ls";
4

1 回答 1

3

这是一个按预期工作的简单、直接的示例:

#include <glob.h>
#include <stdio.h>

int foo(char const * epath, int eerrno) { return 0; }

int main()
{
    glob_t globbuf = {0};

    glob("*.c", GLOB_DOOFFS, foo, &globbuf);

    for (size_t i = 0; i != globbuf.gl_pathc; ++i)
    {
        printf("Found: %s\n", globbuf.gl_pathv[i]);
    }

    globfree(&globbuf);
}
于 2013-10-13T16:27:57.277 回答