我一直在尝试使用C中的glob函数在我存储数据的目录中获取一组文件名。但是我一直收到一条错误消息,声称"无效的参数"。我不知道它引用了什么参数。以下是产生错误的示例代码
#include <stdio.h>
#include <errno.h>
#include <string.h>
#include <stdlib.h>
#include <glob.h>
int main(int argc, char *argv[]){
int j = 0, err = 0;
glob_t *files = NULL;
err = glob("*", GLOB_ERR | GLOB_MARK, NULL, files);
if(err){
printf("Error found: %s\n",strerror(errno));
exit(err);
}
for(j = 0; j < files->gl_pathc; ++j){
printf("%s\n",files->gl_pathv[j]);
}
return 0;
}
寻找任何建议
答案 0 :(得分:1)
您目前正在通过files
的方式,glob()
无法实际填充它。相反,你想要做的是:
glob_t files = { 0 };
err = glob("*", GLOB_ERR | GLOB_MARK, NULL, &files);
您也应该稍后致电globfree(&files)
进行清理。