C++ , gets
Résolu
progfann
Messages postés
365
Date d'inscription
Statut
Membre
Dernière intervention
-
fiddy Messages postés 11069 Date d'inscription Statut Contributeur Dernière intervention -
fiddy Messages postés 11069 Date d'inscription Statut Contributeur Dernière intervention -
Bonjour,
j'ai un probleme avec le gets
voila ma fonction:
lors de l'execution il m'affiche:
d'ou vient le probleme? merci
j'ai un probleme avec le gets
voila ma fonction:
void Livre::lire(){ cout<<"Entrer l'annee : "; cin>>annee; cout<<"Entrer le titre : "; gets(titre); cout<<"Entrer l'auteur : "; gets(auteur); }
lors de l'execution il m'affiche:
Entrer l'annee: // et puis j'entre l'annee Entrer le titre : Entrer l'auteur : // ici je peux juste auteur, il saute le titre
d'ou vient le probleme? merci
2 réponses
Salut,
Normal, tu as un \n dans le buffer clavier ;).
Pourquoi ne tout simplement pas utiliser un "cin >> auteur" ?
Normal, tu as un \n dans le buffer clavier ;).
Pourquoi ne tout simplement pas utiliser un "cin >> auteur" ?
Bah, tu as juste à faire :
Pas besoin d'utiliser gets ;). Qui plus est gets est vraiment déconseillé, même en C.
De plus, fflush() n'est pas définie sur les entrées comme stdin. Pour vider le buffer clavier :
En C, on utilise :
Et en C++, on utilise :
getline(cin, auteur)
Pas besoin d'utiliser gets ;). Qui plus est gets est vraiment déconseillé, même en C.
De plus, fflush() n'est pas définie sur les entrées comme stdin. Pour vider le buffer clavier :
En C, on utilise :
while((c=getchar())!='\n' && c!=EOF);
Et en C++, on utilise :
cin.ignore(numeric_limits<int>::max(), '\n');
OK ça va maintenant j'ai ajouté le fflush(stdin) pour vider le buffer.
Merci à vous,