Saisir une phrase en C++

Résolu/Fermé
ttt Messages postés 2 Date d'inscription jeudi 3 avril 2003 Statut Membre Dernière intervention 1 février 2005 - 1 févr. 2005 à 16:43
mich62120 Messages postés 631 Date d'inscription jeudi 22 novembre 2007 Statut Membre Dernière intervention 21 janvier 2010 - 16 juin 2008 à 13:56
Bonjour

Lorsque je veux saisir une phrase(chaine de caractères avec des mots séparés par des espaces) dans une variable en C++,seul le premier mot est stocké dans la variable. Par exemple :
si je tape la chaine "le chien" au clavier et la mets dans une variable nommée "phrase", seul le mot "le" est stocké dans la variable "phrase".
Comment saisir une phrase avec des espaces en une seule fois? (un seul appui sur "Entrée")
Merci d'avance.

6 réponses

Ravachol Messages postés 560 Date d'inscription vendredi 5 mars 2004 Statut Membre Dernière intervention 30 octobre 2005 120
1 févr. 2005 à 17:12
Salut,
Comme ceci:
getline(cin, phrase);


A++
ttt Messages postés 2 Date d'inscription jeudi 3 avril 2003 Statut Membre Dernière intervention 1 février 2005
1 févr. 2005 à 18:02
Salut Ravachol

getline(cin, phrase); doit etre ecrit a la place de cin>>phrase???
si oui ca ne parche pas. Dois je appeler une bibliothèque particulière??
0
Ravachol Messages postés 560 Date d'inscription vendredi 5 mars 2004 Statut Membre Dernière intervention 30 octobre 2005 120 > ttt Messages postés 2 Date d'inscription jeudi 3 avril 2003 Statut Membre Dernière intervention 1 février 2005
1 févr. 2005 à 18:16
Ce code fonctionne chez moi sous GNU/Linux compilé avec g++:
#include <iostream>
#include <cstdlib>

using namespace std;

int main(int argc, char *argv[])
{
  string phrase;
  getline(cin, phrase);
  cout << phrase << endl;
  return EXIT_SUCCESS;
}


A++
0
p00col Messages postés 1 Date d'inscription mercredi 16 avril 2008 Statut Membre Dernière intervention 9 juin 2008 > Ravachol Messages postés 560 Date d'inscription vendredi 5 mars 2004 Statut Membre Dernière intervention 30 octobre 2005
9 juin 2008 à 23:00
Salut quelqu un peut m'aider, je suis débutant au programation en c ,ma question est :"Comment enregistrer un mot"
ou "une phrase" dans une variable. je sait comment enregistrer un nombre par la fenction "long ou...", mes les phrase non. merci beaucoup.
0
p00col > p00col Messages postés 1 Date d'inscription mercredi 16 avril 2008 Statut Membre Dernière intervention 9 juin 2008
13 juin 2008 à 12:09
aider moi !!
0
mich62120 Messages postés 631 Date d'inscription jeudi 22 novembre 2007 Statut Membre Dernière intervention 21 janvier 2010 6
13 juin 2008 à 13:32
salut tu remplace long ou int x parr char* et tu remplace %d par %s

par contre pour l'utilisation de cette variable n'est pas pareil car c'est un pointeur (contient l' adresse mémoire du premier caractères) sur ta phrase complète (fin repéré par \0)
ex pour afficher plus besoin de & car c'est déjà une adresse.

Mich
Merci beaucoup mon amis.
j'ai un autre problemm es-que je peut fair des condition avec des chaine de caractères avec "if et else". exemple:
if (nom==p00col)
{
printf("salut mon amis");
}
else
{
printf("non tu es pas mon amis");
}

est si C'est possible donne moi un exemple. merci
mich62120 Messages postés 631 Date d'inscription jeudi 22 novembre 2007 Statut Membre Dernière intervention 21 janvier 2010 6
13 juin 2008 à 14:48
Re

Tu ne peux pas comparer si facilement, il faut utiliser une fonction:

https://fst-informatique.univ-lyon1.fr/

regarde ce lien tu comprendra tout de suite (toi tu regarde si c égale donc vérifier que la fonction renvoie 0).

if (strcmp(nom,"pOOcol") ==0)
{ 
printf("salut mon amis"); 
} 
else 
{ 
printf("non tu es pas mon amis"); 
} 


Mich

PS: rjoute en haut de ton prog:
#include <string.h>
ok je je vais essayé .merci
0
p00col > p00col
13 juin 2008 à 16:07
re
mais conte je tape p00col il me dit toujour : "non tu es pas mon amis" et si je tape un autre mot si la même chose,
merci de me corriger.
0
mich62120 Messages postés 631 Date d'inscription jeudi 22 novembre 2007 Statut Membre Dernière intervention 21 janvier 2010 6 > p00col
13 juin 2008 à 16:14
Essaye de me ttre la même chose, les deux même phrases en argument pour voir

strcmp("abcdef",abcdef") et de voir si ça marche.
si oui le problème vient de la facon dont tu récup le nom.

Au fait si tu as fait copier/ coller de mon message pour le if j'ai écri ton pseudo avec deux grand o si tu mets des 0 (zéros) cela explique la chose.change mes O en 0.
0
p00col > mich62120 Messages postés 631 Date d'inscription jeudi 22 novembre 2007 Statut Membre Dernière intervention 21 janvier 2010
13 juin 2008 à 18:30
voila petit logeciel que j'ai fait, tu peut analysé chez toi et de me dir ou é le problemm ? je veut utilisé une phrase separé par espace :
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main()
{
char mot1[20], mot2[20];
printf("salut cava ? :");
scanf("%s %s",&mot1,&mot2);
if (strcmp(mot1,mot2,"cava bien") ==0)
{
printf("\n");
printf("ok !!");

}
else if (strcmp(mot1,mot2,"non cava pas") ==0)
{
printf("pourquoi ?\n");
printf("\n");
}
else
{
printf("cava");
}
system("pause");
return 0;
}
0

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

Posez votre question
mich62120 Messages postés 631 Date d'inscription jeudi 22 novembre 2007 Statut Membre Dernière intervention 21 janvier 2010 6
16 juin 2008 à 09:54
Salut p00col, désolé pour ce week end mais je n'était pas trop libre pour t'aider (ni en état d'ailleurs :) )
Je epux te proposer d'essayer ça mais je ne peux pas tester d'où je suis donc il peut y avoir plein d'erreur.
Si tu peux tester et copier le resultat de la compilation j'essaierai




int main()
{
char mot1[100];
printf("salut cava ? :");
scanf("%s ",mot1);
if (strncmp(mot1,strlenght(mot1),"cava bien") ==0)
{
printf("\n");
printf("ok !!");

}
else if (strncmp(mot1,strlenght(mot1),"non ca ne va pas") ==0)
{
printf("pourquoi ?\n");
printf("\n");
}
else
{
printf("cava");
}
system("pause");
return 0;
}


strncmp(mot1,strlenght(mot1),"cava bien") //comparer le mot1 avec le troisième argument sur autant de caractere que le deuxième argument comme on prend la taille du mot on compare seulement le mot et pas le tableau.

Il y a moyen de faire ca avec des strig mais je ne prefere pas te dire sans tester.

Mich
merci pour ta reponse Mais j'ai trouvé une erreur sur : if (strncmp(mot1,strlenght(mot1),"cava bien") ==0)
0
mich62120 Messages postés 631 Date d'inscription jeudi 22 novembre 2007 Statut Membre Dernière intervention 21 janvier 2010 6 > p00col
16 juin 2008 à 11:20
lakel?

Il faut que tu me donne un max de details parceke la je peux que te donner des conseils je n'est pas de quoi developper la.
0
p00col > mich62120 Messages postés 631 Date d'inscription jeudi 22 novembre 2007 Statut Membre Dernière intervention 21 janvier 2010
16 juin 2008 à 12:10
re
bon moi je veut developper un program en c qui me questionne de : "Salut cava". et moi je lui répons par 2 mot diférent avec un espace entre les deux ex: "cava bien" ou "non ca ne va pas", est les enregistrer dans 2 variable : char mot1[100], mot2[100].

est ensuite je fait une condition: ex:

si (mo1==cava bien)
{
printf("ok");
}
else
{
printf("pourquoi cava pas");
}
C'est tout, mais comment procéder ?
0
mich62120 Messages postés 631 Date d'inscription jeudi 22 novembre 2007 Statut Membre Dernière intervention 21 janvier 2010 6
16 juin 2008 à 13:56
Pour les détails je te parlais du détail des erreurs données par le compilateur.

Le programme que tu as est bon au niveau procédure, il faut trouver où sont les erreurs.
Renseigne toi sur la fonction strcmp ou strncmp tu verras peut etre d'où vient l'erreur.
Il ne mets aps de fautes pour le scanf?

mich