Saisir une phrase en C++

Résolu
ttt Messages postés 2 Date d'inscription   Statut Membre Dernière intervention   -  
mich62120 Messages postés 631 Date d'inscription   Statut Membre Dernière intervention   -
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 566 Date d'inscription   Statut Membre Dernière intervention   120
 
Salut,
Comme ceci:
getline(cin, phrase);


A++
0
ttt Messages postés 2 Date d'inscription   Statut Membre Dernière intervention  
 
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 566 Date d'inscription   Statut Membre Dernière intervention   120 > ttt Messages postés 2 Date d'inscription   Statut Membre Dernière intervention  
 
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   Statut Membre Dernière intervention   > Ravachol Messages postés 566 Date d'inscription   Statut Membre Dernière intervention  
 
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   Statut Membre Dernière intervention  
 
aider moi !!
0
mich62120 Messages postés 631 Date d'inscription   Statut Membre Dernière intervention   6
 
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
0
p00col
 
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
0
mich62120 Messages postés 631 Date d'inscription   Statut Membre Dernière intervention   6
 
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>
0
p00col
 
ok je je vais essayé .merci
0
p00col > p00col
 
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   Statut Membre Dernière intervention   6 > p00col
 
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   Statut Membre Dernière intervention  
 
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   Statut Membre Dernière intervention   6
 
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
0
p00col
 
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   Statut Membre Dernière intervention   6 > p00col
 
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   Statut Membre Dernière intervention  
 
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   Statut Membre Dernière intervention   6
 
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
0