Bonjour.
J'entends dire un peu partout que la fonction gets a un comportement buggé.
Je voudrais avoir quelques précisions à ce sujet.
Merci
Bonjour.
J'entends dire un peu partout que la fonction gets a un comportement buggé.
Je voudrais avoir quelques précisions à ce sujet.
Merci
L'interface de cette fonction ne dispose pas d'information 'taille du buffer de destination'. Elle n'a donc aucun moyen de tester un éventuel débordement. N'importe quel singe qui passe par là fait exploser le buffer. (C'est le premier test que je fais quand je rec_ois un équipement avec 'ligne de commande').Envoyé par al85
C'est la conception de gets() qui est buggée. Il est impossible de l'utiliser de façon fiable et portable.
Ce défaut bien connu a été exploité en son temps (Google : The Great Internet Worm)
On peut donc la considérer comme une erreur de conception du C ?
Du langage C lui même, non, mais de la biblothèque standard (ok, elle fait partie du C), oui. Ca arrive, nul n'est parfait...Envoyé par al85
Dans la conception de base, effectivement. Après, elle a été conservé dans un soucis de compatibilité avec les versions antèrieures. Personellement, je l'aurais bien sortie de la norme C99 .. mai,s bon, il faut croire que beaucoup de programmes l'utilisaient pour la conserver ! (en tant que fonction dépréciée, il est vrai, mais tout de même)Envoyé par Emmanuel Delahaye
Il est quasient impossible de revenir en arrière sans casser des millions de lignes de code existantes. La prudence est de mise chez les responsables du langage (le comité de normalisation de l'ISO) et en principe, une ancienne pratique reste possible bien que déconseillée. Par contre, je ne crois pas que l'usage de gets() soit formellement déconseillée dans le texte de C99... En tout cas, il n'ya rien de tel dans le draft N869.Envoyé par kaisse
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager