18 lines
1.0 KiB
Markdown
18 lines
1.0 KiB
Markdown
---
|
|
title: "Impossibilité de gets() après scanf() ? - C"
|
|
date: 2015-04-15
|
|
url: impossibilite-de-gets-apres-scanf-c
|
|
layout: post
|
|
category: Programming
|
|
---
|
|
|
|
[![A missing blog post image](/img/blog/impossibilite-de-gets-apres-scanf-c.png)](/img/blog/impossibilite-de-gets-apres-scanf-c.png)
|
|
|
|
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()`.
|