我正在尝试扩展*,所以我做了一些研究,似乎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);
}