gets() a la suite de scanf() -> probleme
Bonjour.
Je me suis récement rendus compte que l'utilisation de gets() a la suite de scanf() posait probleme, aucune valeur n etait demandé par gets().
J'ai donc cherché dans mon grimoir magique et je pense que la raison est que : gets() prends pour valeur le "\n" que l'on tape innocement pour annoncer la fin de la saisie lors de l'utilisation de la fonctions scanf().
La solution que j'ai trouvé est simlple, demander deux fois d affilé la valeur avec gets... :
Code:
1 2 3 4 5 6
|
char *ickis
scanf(......)
gets(ickis);
gets(ickis); |
Si quelqun avait une meilleure solution a me fournir, je serais bien content :)
Re: gets() a la suite de scanf() -> probleme
Citation:
Envoyé par ickis
Je me suis récement rendus compte que l'utilisation de gets() a la suite de scanf() posait probleme, aucune valeur n etait demandé par gets().
Si quelqun avait une meilleure solution a me fournir, je serais bien content :)
L'utilisation de gets() est proscrite. Cette fonction est à l'origine de nombreuses attaques par 'buffer overflow'.
Le mieux est d'utiliser fgets() et la fonction de conversion qui va bien : sscanf(), strto[u]l(), strtod() etc.
De plus, fgets() lit le '\n', ce qui résoud le problème de gets() et scanf() qui laissent trainer les '\n' dans le flux d'entrée, causant des comportements étranges...