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