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]);
}