[C] fgets e char**

di il
2 risposte

[C] fgets e char**

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..

2 Risposte

  • Re: [C] fgets e char**

    Occhio alle parentesi

    while(( (*c) = fgets(buf,20,p))!= NULL )

    printf("%s", (*c));
  • Re: [C] fgets e char**

    Non ci posso credere...sono davvero un idiota..ti ringrazio tanto..
Devi accedere o registrarti per scrivere nel forum
2 risposte