è semplice: la scanf lascia nel buffer un carattere di fine riga '\n'. Quando chiami getchar(), in pratica togli questo carattere dal buffer facendo si che la gets funzioni senza problemi. Senza il getchar(), la gets legge come primo carattere un '\n' e si interrompe subito.
Dovresti poter risolvere il problema inserendo il carattere di fine riga direttamente nella stringa di formattazione di scanf
in pratica invece di
scanf("%s",a.nome);
metti
scanf("%s\n",a.nome);
Ovviamente poi togli il getchar() e verifica se la mia correzione ha funzionato o meno...
|