problème de buffer avec fgets et cin ! [C/C++ sous UNIX] - Programmation
Marsh Posté le 30-08-2002 à 18:06:45
ReplyMarsh Posté le 31-08-2002 à 10:35:13
ReplyMarsh Posté le 31-08-2002 à 11:32:03
C'est le fonctionnement normal des entrées tamponnées en C/C++...
Marsh Posté le 30-08-2002 à 17:47:23
Bonjour,
Je compile sous GNU/Linux avec gcc, et lorsque j'utilise les fonctions
de saisie de chaîne, et notamment fgets (C) ou cin (C++), j'ai des problèmes,
c'est-à-dire que (pour cin) si je fixe la taille à 10 caractères par exemple
avec cin.width(10), si je tape plus de 10 caractères le surplus est lu par le
prochain appel de cin.
Voici un exemple :
A l'exécution je tape '123456789azeqsd' pour le premier cin, et le 2eme est tout
simplement non exéctué, et b vaut 'azeqsd', puis ensuite je peux entrer
ce que je veux dans c.
Le problème avec fsets est du même accabit (de toute façon cin est une surcouche
de fonctions du C je me trompe ?)
Je sais bien sûr qu'il s'agit d'un problème de buffer, mais même si j'exécute
la fonction fflush(stdin); après la saisie de a ça ne change rien, c'est à dire
que le surplus estquand même stocké dans le buffer, et lu par le 2eme cin et
par conséquent stocké dans b ...
J'aimerai donc savoir comment saisir des chaînes une fois pour toutes !
De plus j'aimerai pouvoir saisir des espaces, mais la fonction getline (celle de
la classe istream, pas celle de la bibliothèque GlibC ne marche pas non plus !
Help me !
---------------
Du temps à perdre ? -> http://www.juju-le-barbare.fr.fm