Bonjour,
Voilà, je débute en programmation et je suis actuellement en train de m'entraîner sur les chaînes de caractères...
Comme vous le savez, le fameux :
char NomDeLaChaine[50];
scanf("%s", &NomDeLaChaine);
J'ai créé un petit programme pour m'y entraîner, similaire au début du jeu Pokémon : il demande à l'utilisateur son nom, si cela est exact, puis lui affiche son nom et fais de même avec le nom du rival et de sa ville.
Tout se passe bien, sauf dans un cas très précis : si je mets un espace dans l'une des chaînes...
Pour commencer, voici le code de mon programme :
#include <cstdlib>
#include <iostream>
#include <string.h>
using namespace std;
int main(int argc, char *argv[])
{
char util[10], copieutil[10] = {0}, choix;
char adversaire[10], copieadversaire[10] = {0}, choix2;
char OHV[35], copieOHV[10] = {0}, choix3;
do{
printf("\nComment vous appelez-vous?\t");
scanf("%s", &util);
printf("\nVous vous appelez donc %s ? (O=Oui, N=Non)\t", util);
scanf("%s", &choix);
if(choix=='O' && choix!='N')
{
printf("\nD'accord, votre nom est donc ");
}
}while(choix=='N');
strcpy(copieutil, util);
printf("%s !\n\n", copieutil);
do{
printf("\nLe nom de votre rival?\t\t");
scanf("%s", &adversaire);
printf("\nVotre rival est donc %s ? (O=Oui, N=Non)\t", adversaire);
scanf("%s", &choix2);
if(choix2=='O' && choix2!='N')
{
printf("\nAh mais oui, c'est ");
}
}while(choix2=='N');
strcpy(copieadversaire, adversaire);
printf("%s votre rival!\n\n", copieadversaire);
do{
printf("\nEt ou habitez-vous?\t\t");
scanf("%s", &OHV);
printf("\nVous habitez donc a %s ? (O=Oui, N=Non) ?\t", OHV);
scanf("%s", &choix3);
if(choix3=='O' && choix3!='N')
{
printf("\nVous etes donc ");
}
}while(choix3=='N');
strcpy(copieOHV, OHV);
printf("%s, de %s !\n\n\n", copieutil, copieOHV);
system("PAUSE");
return EXIT_SUCCESS;
}
Et maintenant, voilà ce qu'il se passe lorsque l'on insère aucun espace : le programme s'exécute correctement :
http://img75.imageshack.us/my.php?image=console1bonnejk2.jpg
En revanche, quand on insère des espaces :
http://img374.imageshack.us/my.php?image=console1faussedk1.jpg
Bien entendu, je pourrais indiquer dès le début du programme qu'il ne faut surtout pas insérer d'espace dans sa réponse, mais entre le feignant/pressé qui va ne pas lire et directement se jeter sur la réponse et l'imbécile qui va justement braver l'interdit, il y a fort à faire, vous vous doutez bien.
Quelqu'un aurait-il donc une solution pour moi? :D
Merci d'avance !
