Picture

Samuel's Website

Impossibilité de gets( ) après scanf( ) ? - C

Samuel Forestier — 15 April 2015
Tout le monde sait à quel point gets() n'est vraiment pas une fonction "fiable", mais personnellement, je pensais qu'il y avait des limites...

Si vous faites un basique scanf(), suivi d'un gets() (et même dans une autre fonction), votre gets() sera juste ignoré.
Apparemment, c'est au niveau du caractère de fin de chaîne lors de la saisie de votre scanf() qui serait pris en compte lors de l'appel du gets(), et donc causant son arrêt immédiat. Pour lui, la saisie de sa chaîne est terminée, car il tombe sur le caractère "\n" généré par le scanf() immédiatement à la fin du buffer.

L'astuce est donc de récupérer ce caractère ci à l'aide d'une fonction type getchar(), juste après l'appel du scanf().