我正在尝试扩展*,所以我做了一些研究,似乎glob是要使用的函数。就像linux在键入ls*.c时一样,它将返回包含.c的所有文件
我要自己开始了,所以我知道我需要先去malloc glob,所以这里是:

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";

最佳答案

下面是一个简单、直截了当的例子:

#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);
}

09-06 19:55