Volendo puoi usare anche semplicemente la fscanf()
se hai la garanzia di non avere righe più lunghe dello spazio che hai allocato per s.codice:while (! feof(f)) { if (fscanf(f, "%s", s) == 1) { printf("%s*", s); } }
Tra le altre cose, perché ricorri all'allocazione dinamica se poi allochi un numero costante di elementi? Inoltre aggiungerei dei controlli sia di corretta apertura sullo stream f che di corretta allocazione sul puntatore s (se proprio vuoi ricorrere all'allocazione dinamica, pur essendo inutile in quel caso).

