- Codice: Seleziona tutto
void esercizio03 (char * percorso, int * ritorno){
int filedes,dummyvar,contatore;
char * read_stream;
char * indirizzo_riga;
char riga_letta[300];
contatore=0;
printf("\n *** %s ***\n", percorso);
//apro il file, se qualcosa nn va ritorno -1
filedes=open(percorso,O_RDONLY);
if (filedes==-1)
ritorno[0]=-1;
else{
//numero di caratteri
ritorno[0]=lseek(filedes,0,SEEK_END);
//numero di parole
ritorno[1]=0;
//numero di righe
read_stream=(char *) malloc(ritorno[0]);
dummyvar=lseek(filedes,0,SEEK_SET);
dummyvar=read(filedes, read_stream, ritorno[0]);
while (1){
indirizzo_riga=fgets(riga_letta,250,read_stream);
if (indirizzo_riga==NULL)
break;
else
contatore ++;
}
ritorno[2]=contatore;
}
}
Il problema è che indirizzo_riga=fgets(riga_letta,250,read_stream) secondo il gapil, dovrebbe ritornarmi l'indirizzo di riga_letta se ok, oppure NULL in caso di problemi: in realtà mi sputa un segmentation fault e mi manda bellamente a quel paese
Il sorgente completo è qui
Suggerimenti?