[C]Des espaces dans les chaines de caractères
Résolu/Fermé
Yuku
Messages postés
199
Date d'inscription
samedi 22 mars 2008
Statut
Membre
Dernière intervention
22 mars 2012
-
11 oct. 2008 à 18:36
Yuku Messages postés 199 Date d'inscription samedi 22 mars 2008 Statut Membre Dernière intervention 22 mars 2012 - 11 oct. 2008 à 19:21
Yuku Messages postés 199 Date d'inscription samedi 22 mars 2008 Statut Membre Dernière intervention 22 mars 2012 - 11 oct. 2008 à 19:21
A voir également:
- [C]Des espaces dans les chaines de caractères
- Caractères ascii - Guide
- Recherche automatique des chaînes ne fonctionne pas - Guide
- Espaces insécables - Guide
- Caractères spéciaux clavier azerty - Guide
- Caractères spéciaux - Guide
6 réponses
mype
Messages postés
2435
Date d'inscription
jeudi 1 novembre 2007
Statut
Membre
Dernière intervention
16 août 2010
436
11 oct. 2008 à 19:06
11 oct. 2008 à 19:06
hum...je vois l'erreur tu as oublier de vider le buffer apres tes scanf de choix...
essaye ça
essaye ça
#include <string.h> #include <stdio.h> #include <stdlib.h> //using namespace std; int main(int argc, char *argv[]) { char util[10], adversaire[10], OHV[35]; //Initialisation des chaines de caractères. char choix; //Initialisation de la variable choix (%c car O[oui] ou N[non]). do{ printf("\nComment vous appelez-vous?\t"); fgets(util,10,stdin); //L'utilisateur informe de son nom. fflush(stdin); //Nettoyage du buffer pour éviter des problèmes avec scanf. printf("\nVous vous appelez donc %s ? (O=Oui, N=Non)\t", util); scanf("%c", &choix); fflush(stdin); if(choix=='O' && choix!='N') { printf("\nD'accord, votre nom est donc "); } }while(choix=='N'); //Boucle qui se répète tant que le choix n'est pas correct. printf("%s !\n\n", util); do{ printf("\nLe nom de votre rival?\t\t"); fgets(adversaire,10,stdin); fflush(stdin); printf("\nVotre rival est donc %s ? (O=Oui, N=Non)\t", adversaire); scanf("%c", &choix); fflush(stdin); if(choix=='O' && choix!='N') { printf("\nAh mais oui, c'est "); } }while(choix=='N'); printf("%s votre rival!\n\n", adversaire); do{ printf("\nEt ou habitez-vous?\t\t"); scanf("%s", OHV); fflush(stdin); printf("\nVous habitez donc a %s ? (O=Oui, N=Non) ?\t", OHV); scanf("%c", &choix); if(choix=='O' && choix!='N') { printf("\nVous etes donc "); } }while(choix=='N'); printf("%s, de %s !\n\n\n", util, OHV); system("PAUSE"); return 0; }
mype
Messages postés
2435
Date d'inscription
jeudi 1 novembre 2007
Statut
Membre
Dernière intervention
16 août 2010
436
11 oct. 2008 à 18:45
11 oct. 2008 à 18:45
le scanf arrete de stocké des qu'il rencontre un espace la solution c'est d'utiliser fgets qui lui stocke les espace
fgets(util,10,stdin);pour l'autre question au lieu d'utiliser system("PAUSE") tu peux utiliser getchar()
Yuku
Messages postés
199
Date d'inscription
samedi 22 mars 2008
Statut
Membre
Dernière intervention
22 mars 2012
4
11 oct. 2008 à 18:47
11 oct. 2008 à 18:47
Le fgets, c'est donc :
fgets(variable, taille, lieu de destination) ?
fgets(variable, taille, lieu de destination) ?
Yuku
Messages postés
199
Date d'inscription
samedi 22 mars 2008
Statut
Membre
Dernière intervention
22 mars 2012
4
11 oct. 2008 à 18:52
11 oct. 2008 à 18:52
Euh oui mais si je mets donc fgets(util, 10, stdin); à la place de scanf("%s", util);, le programme ne s'exécute pas correctement du tout...
Comment je dois initialiser mes variables pour le coup?
Comment je dois initialiser mes variables pour le coup?
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
mype
Messages postés
2435
Date d'inscription
jeudi 1 novembre 2007
Statut
Membre
Dernière intervention
16 août 2010
436
11 oct. 2008 à 18:58
11 oct. 2008 à 18:58
pour savoir la construction de fgets ICI
comment sa ton prog ne s'execute pas il y a juste a remplacer les scanf ou tu stocke les nom par le fgets...
comment sa ton prog ne s'execute pas il y a juste a remplacer les scanf ou tu stocke les nom par le fgets...
Yuku
Messages postés
199
Date d'inscription
samedi 22 mars 2008
Statut
Membre
Dernière intervention
22 mars 2012
4
11 oct. 2008 à 19:21
11 oct. 2008 à 19:21
J'ai réussi entretemps, j'ai juste mis des fflush entre chaque do{, tout se passe très bien ! ^^
D'autre part j'ai utilisé le strchr pour éviter de prendre en compte le retour à la ligne dans ma chaîne ;)
Merci bien !
D'autre part j'ai utilisé le strchr pour éviter de prendre en compte le retour à la ligne dans ma chaîne ;)
Merci bien !