Salve a tutti..è da ieri che sbatto la testa su una funzione che non riesco ad implementare bene.
posto il codice del main:
int main(int argc, char* argv[]){
FILE* p = fopen("prova2.txt","r");
char **s = NULL;
leggi(p,&s);
}
e ora la funzione leggi:
int leggi(FILE *p,char** c[]){
int i = 0;
char buf[20];
*c = (char**)calloc(10,sizeof(char*));
while((*c = fgets(buf,20,p))!= NULL ){
printf("%s",*c);
i++;
}
return i;
}
la funzione leggi deve restituirmi il numero di righe lette;
il file prova2.txt contiene 5 righe di max 5-6 caratteri.
mandando in esecuzione il main, mi stampa le prime due righe del file e poi di ma segfault.
quindi l'errore dovrebbe essere nell'allocazione di c all'interno della leggi.
il ragionamento che io faccio è che devo allocare un array di n char* ai quali poi devo assegnare il char* restituito dalla fgets. è giusto come ragionamento?
non posso modificare nè la main, nè l'intestazione della leggi.
quindi vi chiedo se qualcuno può darmi una mano a capire quale è l'errore che commetto.
grazie a tutti per l'attenzione..