C &引用;无效参数";全球化时出错

C &引用;无效参数";全球化时出错,c,gnu,glob,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[]){

我一直在尝试使用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;
}
#包括
#包括
#包括
#包括
#包括
int main(int argc,char*argv[]){
int j=0,err=0;
glob_t*files=NULL;
err=glob(“*”,glob_err | glob_MARK,NULL,files);
如果(错误){
printf(“发现错误:%s\n”,strerror(errno));
退出(err);
}
对于(j=0;jgl_pathc;++j){
printf(“%s\n”,文件->gl_pathv[j]);
}
返回0;
}

寻找任何建议

您当前传递
文件的方式
实际上没有办法填充
glob()
。相反,您要做的是:

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

您还应该稍后调用
globfree(&files)
进行清理。

另一个解决方案是尝试
glob\u t*files=NULL
files=malloc(sizeof(glob_t))
err=glob(“*”,glob_err | glob_MARK,NULL,文件)以保持“->”合成