2014-08-28 5 views
0

J'ai essayé d'utiliser la fonction glob dans C pour obtenir un ensemble de noms de fichiers dans un répertoire où je stocke des données. Cependant, je continue à recevoir un message d'erreur qui prétend "Argument invalide". Je n'ai aucune idée de l'argument auquel il se réfère. Voici un exemple de code qui produit l'erreurErreur "Argument invalide" lors de la globalisation

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

foward pour toute recherche suggestions

Répondre

1

La façon dont vous passez actuellement files il n'y a aucun moyen glob() pourrait effectivement remplir. Au contraire, ce que vous voulez faire est:

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

Vous devez également appeler globfree(&files) plus tard pour nettoyer.

+0

Une autre solution est d'essayer 'glob_t fichiers * = NULL;' fichiers '= malloc (sizeof (glob_t))' 'err = glob ("*", GLOB_ERR | GLOB_MARK, NULL, fichiers); ' pour conserver la syntaxe" -> " –

Questions connexes