Pour compiler tout ça un peu...
----
- include < iostream>
- include < string.h>
- include < stdlib.h>
using namespace std;
int main(int argc, char *argv[])
{
char raceperso[21];
char inputbuffer[21];
int race;
cout < < " Choisir race\n1 - HUMAIN\n2 - NAIN\n3 - ELF" < < endl;
cin > > inputbuffer;
inputbuffer[strlen(inputbuffer)] = ´\0´;
race = atoi(inputbuffer);
switch(race)
{
case 1:
strcpy(raceperso, " HUMAIN");
break;
case 2:
strcpy(raceperso, " NAIN");
break;
case 3:
strcpy(raceperso, " ELF");
break;
default:
break;
}
return EXIT_SUCCESS;
}
----
C´est pas mal la réponse complète à ton problème... Petit détail ici, si l´utilisateur entre plus de 20 caractères pendant le cin, il y aura un buffer overflow ( ce qui n´est pas une bonne chose).
De plus, note bien que si l´utilisateur entre un truc qui n´a aucun rapport avec 1, 2 ou 3, c´est la case ´default´ dans la switch qui sera joué ( donc dans ce cas-ci, le programme ne fait aucune affectation puisque la case ´default´ ne contient qu´un break - ce qui sort de la structure switch). Il aurait été tout aussi acceptable ( dans la mesure où j´ignore où tu cherches à aller une fois ce problème résolu) d´opter pour 3 structures telles que celle-ci:
if(race == x)
{
strcpy(raceperso, " xxx");
}
strcpy sert à copier une chaîne de caractères dans une variable de type approprié ( donc un tableau de caractères soit char *).
atoi prend une chaîne de caractères et retourne la valeur integer qui s´y trouve. Donc si tu as un char qui contient " 1", et que tu fais mon_integer = atoi(mon_char_qui_contient_un), mon_integer devient égal à 1.
J´espère que c´était pas trop long ou complètement HS
.