CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

la fonction char

Mister_Gredin
Mister_Gredin
Niveau 4
31 janvier 2005 à 21:43:55

salut a tous
alors voila, j´ai un problème pour un prog
l´utilisateur doit choisir la race de son perso
a l´écran on a :
" 1-HUMAIN
2-NAIN
3-ELFE"
je fais un cin>>race avec auparravant un int race;
je pose char raceperso[20];
comment je fais pour dire au prog que si race=1
alors raceperso=HUMAIN
?
merci d´avance

-le petit gredin de la clairière-

Ptival
Ptival
Niveau 10
31 janvier 2005 à 23:02:38

Bah dois yavoir une fonction pour remplir un tableau...

Peut-être un raceperso="HUMAIN"; mais ça m´étonnerait...Ou quoique, ça marche bien de tester en faisant nom_table == " texte"...

Sinon doit yavoir une fonction...Au pire tu remplis les cases une par une :lol:

Ptival
Ptival
Niveau 10
31 janvier 2005 à 23:05:24

Alors voilà 2 solutions :

Soit tu utilises strcpy ( disponible en incluant string.h) et tu mets :

strcpy(raceperso,"HUMAIN");

Ou bien, tu remplis comme ça :

Chaine[20+1]={ ´H´, ´U´, ´M´, ´A´, ´I´, ´N´, ´\0´ };

Ptival
Ptival
Niveau 10
31 janvier 2005 à 23:06:02

oups, mets charperso à la place de Chaine[20+1] ( ça m´apprendra à copier-coller...et à triple poster)

techslash
techslash
Niveau 8
01 février 2005 à 05:00:29

Pour compiler tout ça un peu...

----

  1. include < iostream>
  2. include < string.h>
  3. 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 :) .

JeanYvesYves
JeanYvesYves
Niveau 10
01 février 2005 à 11:15:09

sinon, quit a utiliser iostream, autant utiliser le type " string" purement C++

voir mon tuto ( cf ma carte) paragraphe F.2.1 et F.2.2

Annexius
Annexius
Niveau 8
01 février 2005 à 11:30:28

Moi je dis, tu devrais mettre un truc comme ça:
{void main
cin.truc>>get.machin
bidule shin.h(random,MAIN)
over /

. ..

Bon, d´accord, j´y connais rien.
:lol:

Mister_Gredin
Mister_Gredin
Niveau 4
01 février 2005 à 21:50:25

merci à tous, j´essaye ça tout de suite

Sous forums
  • Aide à l'achat Mac
  • Création de Jeux
  • Linux
  • Création de sites web
  • Programmation
  • Internet
  • Steam Deck
  • Macintosh
  • Hardware
La vidéo du moment