Mezzetti0903
23-06-2007, 13:54
Qualcuno può darmi una mano a capire perchè il la funzione ferror restituisce vero in questo sorgente?
Non capisco perchè se ometto di controllare il file è caricato correttamente quindi vorrei dire alla ferror che si sbaglia.....
FILE* fl;
int pgsz;
int charread;
charread = pgsz = getpagesize();
fl = fopen(path,"r");
if(!fl){
perror("Errore leggendo il file ");
fprintf(stderr,"Errore relativo al file %s",path);
return -1;
}
while (charread==pgsz){
*pos=realloc(*pos,*size+pgsz);
memerror(*pos,return -1;);
charread = fread(*pos+*size,1,pgsz,fl);
*size += charread;
}
*pos=realloc(*pos,*size+2);
memerror(*pos,return -1;);
*(*pos+*size)='\n';
*(*pos+*size+1)='\n';
*size+=2;
if(!ferror(fl)){
fprintf(stderr,"Errore leggendo il file %s",path);
return -1;
}
fclose(fl);
return 0;
Non capisco perchè se ometto di controllare il file è caricato correttamente quindi vorrei dire alla ferror che si sbaglia.....
FILE* fl;
int pgsz;
int charread;
charread = pgsz = getpagesize();
fl = fopen(path,"r");
if(!fl){
perror("Errore leggendo il file ");
fprintf(stderr,"Errore relativo al file %s",path);
return -1;
}
while (charread==pgsz){
*pos=realloc(*pos,*size+pgsz);
memerror(*pos,return -1;);
charread = fread(*pos+*size,1,pgsz,fl);
*size += charread;
}
*pos=realloc(*pos,*size+2);
memerror(*pos,return -1;);
*(*pos+*size)='\n';
*(*pos+*size+1)='\n';
*size+=2;
if(!ferror(fl)){
fprintf(stderr,"Errore leggendo il file %s",path);
return -1;
}
fclose(fl);
return 0;