Saisir une lettre, un mot, une phrase en CPP

val3113 Messages postés 22 Date d'inscription lundi 23 juin 2003 Statut Membre Dernière intervention 9 juin 2007 - 12 nov. 2006 à 18:29
azer3 Messages postés 2 Date d'inscription mardi 1 avril 2008 Statut Membre Dernière intervention 26 juin 2008 - 8 juin 2008 à 00:20
Bonjour, je suis nouveau en c++ et j'essaie de faire un bete programme console qui permettrait de saisir une lettre, puis un mot, puis une phrase. J'utilise gedit, sur ubuntu, je compile avec g++.

Voici le code que j'ai essayé:

#include
#include<string>
using namespace std;

int main()
{
    char Buf[80];
    cout << "1.saisir une lettre : "; cin >> Buf;
    cout << "1.la lettre saisie est : " << Buf << endl;       // 1

    cout << "2.saisir un mot : "; cin.getline(Buf, 80);
    cout << "2.le mot saisi est : " << Buf << endl;           // 2

    cout << "3.saisir une phrase : "; cin.getline(Buf, 80);
    cout << "3.la phrase saisie est : " << Buf << endl;    // 3
    return 0;
}

Si je retire le point 1, les points 2 et 3 fonctionnent
Sinon ils ne fonctionnent pas.

Si j'utilise une variable différent pour le points 1 et pour les 2 et 3, le probleme reste.

J'imagine qu'on peut garder la même pour chaque variable?
Il y a peut etre quelque chose a faire avant un cin.getline, ou une fonction plus adaptée ?

Si quelqu'un sait m'aider je l'en remercie d'avance.

9 réponses

val3113 Messages postés 22 Date d'inscription lundi 23 juin 2003 Statut Membre Dernière intervention 9 juin 2007
12 nov. 2006 à 18:31
Je préciserai que je veux simplement saisir et afficher chacun d'entre eux, rien d'autre.
0
Arnaud16022 Messages postés 1329 Date d'inscription vendredi 15 août 2003 Statut Membre Dernière intervention 16 juin 2010 2
12 nov. 2006 à 19:03
je dirais:

cin>>Buf[0]

cin>>Buf

et enfin
cin.getline(Buf, 80);
( pas de compilo sous la main )
_______________________

Omnia vincit labor improbus
0
NairodDorian Messages postés 130 Date d'inscription lundi 26 juin 2006 Statut Membre Dernière intervention 18 août 2008
12 nov. 2006 à 19:47
C'est marrant que tu utilises un tableau de char alors que tu inclus dans ton code le header string.

Je dirai plutot :

#include
#include<string>
using namespace std;

int main()
{
    string Buf;
    cout << "1.saisir une lettre : "; cin >> Buf;
    cout << "1.la lettre saisie est : " << Buf[0] << endl;       // 1

    cout << "2.saisir un mot : "; cin >> Buf;
    cout << "2.le mot saisi est : " << Buf << endl;           // 2

    cout << "3.saisir une phrase : "; cin >> Buf;
    cout << "3.la phrase saisie est : " << Buf << endl;    // 3
    return 0;
}
0
val3113 Messages postés 22 Date d'inscription lundi 23 juin 2003 Statut Membre Dernière intervention 9 juin 2007
12 nov. 2006 à 20:24
Merci pour vos réponses mais aucune d'elles ne résoud le probleme. pour le header string dans la partie de code que j'ai mis il n'est pas nécessaire..
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Arnaud16022 Messages postés 1329 Date d'inscription vendredi 15 août 2003 Statut Membre Dernière intervention 16 juin 2010 2
12 nov. 2006 à 21:55
    string Buf;

   

    char caractere;


    cout << "1.saisir une lettre : "; cin>>caractere;

    cout << "1.la lettre saisie est : " <<
caractere << endl;       // 1

cin.ignore(1000, '\n');

    cout << "2.saisir un mot : "; cin >> Buf;

    cout << "2.le mot saisi est : " << Buf
<<
endl;           // 2

cin.ignore(1000, '\n');


et pour la phrase, ça va venir ^^

_______________________

Omnia vincit labor improbus
0
val3113 Messages postés 22 Date d'inscription lundi 23 juin 2003 Statut Membre Dernière intervention 9 juin 2007
19 nov. 2006 à 15:42
ok J'attend, et finalement je ne travaille plus qu'avec des strings, mais au fait a quoi sert le cin.ignore?
0
Arnaud16022 Messages postés 1329 Date d'inscription vendredi 15 août 2003 Statut Membre Dernière intervention 16 juin 2010 2
22 nov. 2006 à 11:15
heu dsl j'ai pas eu le temps, je vois ça ce soir si t'as encore besoin

ignore c'est pour supprimer tout ce que t'as rentré apres le 1er espace et qui sinon se retrouverait direct dans le cin d'apres.

_______________________

Omnia vincit labor improbus
0
thecatcat Messages postés 1 Date d'inscription lundi 13 juin 2005 Statut Membre Dernière intervention 24 novembre 2006
24 nov. 2006 à 15:26
cin.ignore(1000,'\n');

 // permet de "purger" le tampon d'entrée de tous les caractères accumulés  y compris les '\n'
0
azer3 Messages postés 2 Date d'inscription mardi 1 avril 2008 Statut Membre Dernière intervention 26 juin 2008
8 juin 2008 à 00:20
0
Rejoignez-nous