Oppure

Loading
09/02/11 11:13
tekdu
salve, da poco programmo in c ed ho riscontrato dei problemi scrivendo una funzione che carica una matrice di caratteri con la "lista" dei file di una directory.
l'errore avviene se utilizzo 2 volte la funzione, la prima volta non ci sono problemi.
Cosa ho sbagliato?? aiuto please.
Ultima modifica effettuata da tekdu 09/02/11 11:19
aaa
09/02/11 11:17
tekdu
char** getFiles(int *counter,const char* path){
    DIR *directory=opendir(path);
    struct dirent *drent;
    int nItems=2;
    int i=0;
    if(directory==NULL){
    perror("failed to open directory");
        return;
    }
    char p[50];
    strcpy(p,path);
    strcat(p,"/");
    char **files=(char**)malloc(sizeof(char*)*nItems);
    while ((drent= readdir(directory))!=NULL){
        if(strcmp(".",drent->d_name)!=0 && strcmp("..",drent->d_name)!=0){
        size_t nameLen=strlen(drent->d_name)+strlen(p);
        files[i]=(char*)malloc(sizeof(char)*nameLen);
        strcpy(files[i],p);
        strcat(files[i],drent->d_name);
        i++;
        }
        if(i>nItems-1) {
            nItems*=2;
            files=(char**)realloc(files,(sizeof(char*)*nItems));
        }
    }
    files=(char**)realloc(files,(sizeof(char*)*i));
    memcpy(counter,&i,sizeof(int));
    return files;
}

void main(){
char f**;
int c,i;
f=getFIles(&c,"directoryUNO");
for(i=0;i<c;i++){
printf("%s \n,f[i]);
free(f[i]);
}
free(f);
f=getFIles(&c,"directoryDUE");
for(i=0;i<c;i++){
printf("%s \n,f[i]);
free(f[i]);
}
free(f);
}



errore riscontrato: sysmalloc c3096 assertion................................... failed;
credo sia un under/over flow ma non saprei.... help help!
Ultima modifica effettuata da tekdu 09/02/11 11:19
aaa
09/02/11 16:39
Pitagora
guarda la riga 33
char f**;

va sostituita con
char **f;

poi per altre cose non penso che ci siano errori :D
aaa