(C++) Inclure variable int dans un char

twintornado Messages postés 20 Date d'inscription   Statut Membre Dernière intervention   -  
twintornado Messages postés 20 Date d'inscription   Statut Membre Dernière intervention   -
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

A voir également:

2 réponses

ghuysmans99 Messages postés 2496 Date d'inscription   Statut Contributeur Dernière intervention   340
 
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
twintornado Messages postés 20 Date d'inscription   Statut Membre Dernière intervention  
 
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
dubcek Messages postés 18789 Date d'inscription   Statut Contributeur Dernière intervention   5 637
 
hello
char * buffer = "OHMS+8.1000E+3";
float x;
sscanf(index(buffer, '+'),"%E", &x);
0
twintornado Messages postés 20 Date d'inscription   Statut Membre Dernière intervention  
 
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
dubcek Messages postés 18789 Date d'inscription   Statut Contributeur Dernière intervention   5 637
 
il faut sauter le "je suis"
sscanf(index(buffer, ' '),"%E", &m);
utilise printf avec le format %E
printf/("%.3E\n", m);
0
twintornado Messages postés 20 Date d'inscription   Statut Membre Dernière intervention  
 
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
dubcek Messages postés 18789 Date d'inscription   Statut Contributeur Dernière intervention   5 637
 
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
twintornado Messages postés 20 Date d'inscription   Statut Membre Dernière intervention  
 
meme problême en ajoutant strings.h :

rindex is not declared in this scope

info : j'utilise code blocks
0