通配时“无效参数”错误

时间:2014-08-28 16:01:46

标签: c gnu glob

我一直在尝试使用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;
}

寻找任何建议

1 个答案:

答案 0 :(得分:1)

您目前正在通过files的方式,glob()无法实际填充它。相反,你想要做的是:

glob_t files = { 0 };
err = glob("*", GLOB_ERR | GLOB_MARK, NULL, &files);

您也应该稍后致电globfree(&files)进行清理。