[C con Clase] Problema con puntero a puntero char

Ariel Romero aromero en cenatav.co.cu
Jue Oct 18 21:11:29 CEST 2007


Hola a todos:

Soy nuevo en C y quiero hacer una funcion que abra un directorio 
determinado y devuelva la lista de ficheros de primer nivel que existen 
en él. Esto fue lo que hice:


#include <stdio.h>
#include <stdlib.h>
#include <sys/types.h>
#include <dirent.h>
#include <errno.h>

    char** listFilesFromDirectory(char* directory){
        DIR *dip;
        struct dirent   *dit;
        int             i = 0;
        char** filesListFromDirectory;
        
        if ((dip = opendir(directory)) == NULL){
            perror("opendir");
            return NULL;
            }
        
        printf("Directory stream is now open\n");
        
        filesListFromDirectory = malloc(1);      
        while ((dit = readdir(dip)) != NULL){
            filesListFromDirectory[i]= malloc(sizeof(dit->d_name));
            strcpy(filesListFromDirectory[i],dit->d_name);
            i++;            
            }
        filesListFromDirectory[i]= malloc(1);
        filesListFromDirectory[i]="end";
        int var;
        
        if (closedir(dip) == -1){
            perror("closedir");
            return 0;
            }    
        return filesListFromDirectory;        
    }

despues en el main para probar y listar los ficheros hago esto:

int main(int argc, char **argv) {
    char** list; //= malloc(1);
    list = listFilesFromDirectory("res");
    int var = 0;
    while (list[var]!=NULL) {
        puts(list[var]);
        var++;
    }    
    return EXIT_SUCCESS;
}

Pero no sé que sucede que me da error, alguien sabe como hacerlo bien, 
espero que me pueda ayudar.
saludos




Más información sobre la lista de distribución Cconclase