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

C++ : Question

---__---
---__---
Niveau 3
09 août 2003 à 01:54:03

Bonjour à tous, je voudrais savoir si il est possible d´inserer la valeur d´une variable dans une chaine de caractère et si oui de quelle facon.
Merci d´avance :)

Chris_le_ouf
Chris_le_ouf
Niveau 5
09 août 2003 à 12:01:27

bien sûr que c´est possible. si ta variable est un int, regarde du coté de la fonction itoa, c´est un truc genre :
char* itoa( int n, char* dest, int radix)
avec n le nombre à convertir en chaine, dest la chaine de destination et radix la base dans laquelle tu veux exprimer ton nombre, typiquement 10

Altonfrere
Altonfrere
Niveau 10
09 août 2003 à 12:10:21

euh une solution un peu plus simple et qui marche pour tout : sprintf

sprintf(buffer,"%d %08X %2.2f %s", var_int,var_int_en_hexa,var_float,var_chaine);

en gros ca marche comme le printf mis à part que ca met le résultat dans une chaine
etc...

Chris_le_ouf
Chris_le_ouf
Niveau 5
09 août 2003 à 12:16:10

lol je rigole parce d´une part tu as raison c´est beaucoup plus simple, mais je me disais aussi que si le gars connait pas, vu comme tu as présenté ça, je doute qu´il trouve ça simple, au contraire lol. Pas évident à expliquer le fonctionnement d´une fonction qui prend pas un nombre fixe de paramètres

t_simons
t_simons
Niveau 10
09 août 2003 à 13:46:22

la tu affiches, mais je crois qu´il a demandé pour METTRE dans une variable, donc il peut utiliser la fonction sscanf() plutot

JeanYvesYves
JeanYvesYves
Niveau 10
09 août 2003 à 14:41:34

Ben non !
aitonfrere a raison : sprintf sert bien a mettre :)
ici, il y met dans " buffer" qui doit etre un tableau de char alloué.

---__---
---__---
Niveau 3
09 août 2003 à 17:55:00

merci pour vos réponse, je vais travailler ca.

---__---
---__---
Niveau 3
09 août 2003 à 18:26:08

Bon je me suis un peu renseigné sur sprintf()
Donc en gros cela fonctionne comme ca:
sprintf(chaine, " %s", variable);

Maintenant ma question est: Comment peut-on définir à quel endroit de la chaine inserer la variable?
exemple: Je voudrais ajouter le mot " souris" à la chaine " le chat mange la" , ce mot est contenu dans la variable x
Comment pourrais-je me débrouiller?

Altonfrere
Altonfrere
Niveau 10
09 août 2003 à 19:16:03

bah :

sprintf(buffer,"Le chat mange la %s",x);

---__---
---__---
Niveau 3
09 août 2003 à 19:29:14

Et donc buffer correspond au nom de la chaine?

Altonfrere
Altonfrere
Niveau 10
09 août 2003 à 19:52:01

dans laquelle tu veux mettre le résultat oui

---__---
---__---
Niveau 3
09 août 2003 à 20:08:43

merci bien :)

---__---
---__---
Niveau 3
09 août 2003 à 22:24:05

Et concernant la manip de chaines de caractères, est-il possible de les utiliser avec les switch ou les if??

genre if(chaine=!machin);
{
code
}

ou

switch(chaine);
{
case chose:
code

case truc:
code

}

Pryrates
Pryrates
Niveau 5
09 août 2003 à 22:31:59

strcmp() et strncmp() sont tes amis

VictorVVV
VictorVVV
Niveau 6
09 août 2003 à 22:32:08

non pour les switch
oui pour les if , il faut utiliser strcmp :
if ( strcmp(chaine, machin)==0)code;
//exécute code si chaine et machin sont égaux

---__---
---__---
Niveau 3
09 août 2003 à 22:36:55

Merci ! !!

---__---
---__---
Niveau 3
09 août 2003 à 22:41:58

par contre cela ne fonctionne pas avec les chaines de type string :/

( dsl je suis débutant)

---__---
---__---
Niveau 3
09 août 2003 à 22:43:15

Mais il n´y a pas un moyen pour donner à une variable la valeur d´une chaine de caractère ?

Kouic
Kouic
Niveau 9
09 août 2003 à 22:46:11

Bonne remarque, toute les reponses concerne le C et non le C++.

En C++, tu peut utiliser les " ostringstream" dans < sstream>.

Un petit exemple :

  1. include < iostream>
  2. include < sstream>

using namespace std;

int main(int argc, char *argv[])
{
string str;
ostringstream oss;
int i = 3;
oss < < " i = " ;
oss < < i<<endl;
str = oss.str();
cout < < str;
cout < < oss.str();

return 0;
}

Comme tu peus le voir cela s´utilise comme les cout. Facile et efficaces ! !!
Et voila ! !

Pryrates
Pryrates
Niveau 5
09 août 2003 à 22:49:27

enfin le switch et les if c´est crade tout de meme
une structure avec des pointeurs sur fonctions fait ca parfaitement

//Un petit code d´exemple simple

  1. include < stdio.h>

typedef struct s_func
{
char *str;
int ( *f)()
} t_func;

int new_game();
int display_help();
int quit();

t_func gl_functab[] =
{
{"New Game", new_game},
{"Help", help},
{"Quit", quit},
{0, 0}
};

int main()
{
int i;
char[255] ans;

while ( 42)
{
//on récupere une chaine de caractere
printf("Entrer la commande:\n");
scanf("%s", ans);
//on fait les tests pour lancer la fonction associée
for ( i = 0; gl_functab[i].str; i++)
if ( !strcmp(ans, gl_functab[i].str))
return ( gl_functab[i].f());
//si on arrive ici c´est qu´on a une entrée invalide
printf ( "Entrée invalide\n");
}
}

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