(C++) Inclure variable int dans un char

twintornado Messages postés 21 Statut Membre -  
twintornado Messages postés 21 Statut Membre -
Bonjour,

Mon probleme est simple : disont que j'ai une variable entière :

int variable = 488 ; // on suppose qu'elle peut changer bien sur

Je veux maintenant l'inclure dans un char :

char ordre [12];
ordre = "IvariableX";

Afin d'avoir ceci:

ordre = "I488X";

cependant cela ne marche pas de manière aussi simple, s'il vous plait aidez moi.

Remarque: les partis en italiques ne sont la que pour mettre en évidence ce que je veux faire

2 réponses

  1. ghuysmans99 Messages postés 2496 Date d'inscription   Statut Contributeur Dernière intervention   342
     
    int tonnombre = 176;
    char tonbuffer[7];
    sprintf(tonbuffer,"I%dX",tonnombre);

    Fais bien attention à ne pas dépasser la taille du buffer (ou sinon utilise l'allocation dynamique)
    0
    1. twintornado Messages postés 21 Statut Membre
       
      Merci beaucoup ton aide a été très précieuse !

      Pour abuser de toi une fois de plus :

      j'ai maintenant une chaine de caractères :

      buffer = OHMS+8.1000E+3

      si je ne veux garder que le 8.1000E+3

      et l'inclure dans une variable de type float

      quelle commande dois-je utiliser ?
      0
  2. dubcek Messages postés 18627 Date d'inscription   Statut Contributeur Dernière intervention   5 660
     
    hello
    char * buffer = "OHMS+8.1000E+3";
    float x;
    sscanf(index(buffer, '+'),"%E", &x);
    
    0
    1. twintornado Messages postés 21 Statut Membre
       
      Merci ^^

      en suivant tes conseils j'ai un peu modifié ta ligne car il fallait déclarer "index" et donc j'ai fait un petit programme pour tester cela

      int m;
      char buffer [50]="je suis 20.000E+3";
      cout<<buffer<<"\n\n";
      sscanf(buffer,"%E",&m);
      cout<<" la valeur est : "<<m<<endl;

      le problème est que au final la valeur affiché n'est pas 20.000E+3 mais : 2147323904 ....

      pourquoi cette valeur ? je ne sais pas ...

      j'ai ésayé different truc du style %d,%f,%e rien n'y fait

      cela devient encore plus drole :
      j'ai remplacé le int m par un float m

      il m'affiche :

      la valeur est : nan
      0
    2. dubcek Messages postés 18627 Date d'inscription   Statut Contributeur Dernière intervention   5 660
       
      il faut sauter le "je suis"
      sscanf(index(buffer, ' '),"%E", &m);
      utilise printf avec le format %E
      printf/("%.3E\n", m);
      0
    3. twintornado Messages postés 21 Statut Membre
       
      float m;
      char buffer []="je suis 20.000E+3";
      cout<<buffer<<"\n\n";
      sscanf(index(buffer, ' '),"%E", &m);
      printf("%E\n",m);

      il me retourne l'erreur suivante

      index is not declared in this scope ...

      Utilises-tu une bibliothèque autre que stdio.h ? Ou êut etre que c'est moi qui n'ai pas la bonne expression.
      0
    4. dubcek Messages postés 18627 Date d'inscription   Statut Contributeur Dernière intervention   5 660
       
      il faut inclure strings.h
      j'utilise rindex car il y a plusieurs espaces
      $ make float 
      cc     float.c   -o float 
      $ ./float 
      2.000E+04 
      $ cat float.c 
      #include <stdio.h> 
      #include <strings.h> 
      
      main(){ 
       char * buffer="je suis 20.000E+3";  
       float x; 
       sscanf(rindex(buffer, ' '),"%E", &x);  
       printf("%.3E\n", x); 
      } 
      
      0
    5. twintornado Messages postés 21 Statut Membre
       
      meme problême en ajoutant strings.h :

      rindex is not declared in this scope

      info : j'utilise code blocks
      0