Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
826 connectés 

  FORUM HardWare.fr
  Programmation

  [C/C++ sous UNIX] problème de buffer avec fgets et cin !

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[C/C++ sous UNIX] problème de buffer avec fgets et cin !

n°205880
juju-le-ba​rbare
Posté le 30-08-2002 à 17:47:23  profilanswer
 

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 :
 

Code :
  1. char *a = new char[256], *b = new char[256], *c = new char[256];
  2. cin.width(10);
  3. cin >> a;
  4. cin.width(40);
  5. cin >> b;
  6. cin.width(40);
  7. cin >> c;


 
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 ! :hello:


---------------
Du temps à perdre ? -> http://www.juju-le-barbare.fr.fm
mood
Publicité
Posté le 30-08-2002 à 17:47:23  profilanswer
 

n°205891
juju-le-ba​rbare
Posté le 30-08-2002 à 18:06:45  profilanswer
 

:bounce:


---------------
Du temps à perdre ? -> http://www.juju-le-barbare.fr.fm
n°206140
juju-le-ba​rbare
Posté le 31-08-2002 à 10:35:13  profilanswer
 

re : :bounce:


---------------
Du temps à perdre ? -> http://www.juju-le-barbare.fr.fm
n°206162
Jar Jar
Intaigriste
Posté le 31-08-2002 à 11:32:03  profilanswer
 

C'est le fonctionnement normal des entrées tamponnées en C/C++...


---------------
« No question is too silly to ask, but, of course, some are too silly to answer. » -- Perl book

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation

  [C/C++ sous UNIX] problème de buffer avec fgets et cin !

 

Sujets relatifs
[CSS + XHTML strict] Problème de tableau dans un cellule d'un tableau.Problème avec des espaces...
[php]problème entre php et issAsp - Access- Probleme avec INSERT
problème de requête (interbase - delphi)probleme d'affichage d'un fond sur une page wen
problème sous delphi tous est inactif....Alors la Big Probleme de chez big probleme
<DIV> : problème de position absolue et relative [résolu]probleme de droits avec mySQL
Plus de sujets relatifs à : [C/C++ sous UNIX] problème de buffer avec fgets et cin !


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR