Originariamente inviato da Ol3iconfini
Il problema è che fgets() legge fino a \n incluso e quindi lo stampa. Come faccio a leggere la linea fino a \n escluso??
Io in genere tolgo il \n in questo modo:
codice:
char *p;

...
if ((p = strchr (buf, '\n')) != NULL)
    *p = '\0';
Non uso cose del tipo:

buf[strlen(buf)] = '\0';

per un motivo molto semplice: se il buffer è più corto della linea (scenario più che possibile), per leggere l'intera linea ci vogliono più chiamate a fgets ma solo sull'ultimo buffer ritornato c'è il \n. Usando strchr tolgo il \n solo se c'è.