Ho scoperto che il problema di fgetc() è che quando interrompo il ciclo continua a leggere lo stesso carattere, quindi ho provato a fare "spostare" fgetc() di uno ogni volta che incontra uno spazio o un punto con l'indicazione ch += 1 questo però mi da un output strano, per la frase "sono andato al parco" mi restituisce:
$ ./a.out
sono
0parco
codice:for(i=0; (i < 10) && !feof(fp); i++) /* Il seguente passaggio identifica una parola all'interno del testo ** passando carattere per carattere e la aggiunge ad un elemento dell'array */ for(j=0; (j < 20) && !feof(fp); j++) /*Leggere carattere per carattere*/ { if(ispunct(ch) || isspace(ch)) /*Ferma il ciclo se il carattere è uno spazio o un punto*/ { ch += 1; continue; } parole[i][j] = ch; ch = fgetc(fp); } fclose(fp); /* chiude il file */ printf("\n"); printf("\n%s", parole[0]); printf("\n%s", parole[1]); printf("\n%s", parole[2]); }

Rispondi quotando