Proleme avec sprintf
moi
-
moi -
moi -
Bonjour,
si je veux convertir un entier en chaine, je fais sprintf(ch,"%d",n)
si je veux convertir un entier en hexadecimal, je fais sprintf(hex,"%x",n)
Je ne comprends pas la logique associée : le nombre n est un int dans les 2 cas. or dans le 1er cas, ce qu'on met entre guillement est le type du membre de droite (ici n) alors que dans le 2nd cas on met celui du membre de gauche (ici hex).
Peut eter que mon probleme vient du fait que hexadecimal n'est pas un type mais une chaine de caractere, mais si quelqu'un pouvait m'expliquer clairement comment marche ce sprintf...
Merci
si je veux convertir un entier en chaine, je fais sprintf(ch,"%d",n)
si je veux convertir un entier en hexadecimal, je fais sprintf(hex,"%x",n)
Je ne comprends pas la logique associée : le nombre n est un int dans les 2 cas. or dans le 1er cas, ce qu'on met entre guillement est le type du membre de droite (ici n) alors que dans le 2nd cas on met celui du membre de gauche (ici hex).
Peut eter que mon probleme vient du fait que hexadecimal n'est pas un type mais une chaine de caractere, mais si quelqu'un pouvait m'expliquer clairement comment marche ce sprintf...
Merci
A voir également:
- Proleme avec sprintf
- EPSON PERFECTION V330 PHOTO Prolème de numérisation - Forum Imprimante
3 réponses
Salut,
sprintf c'est une fonction de formatage de la sortie qui écrit la sortie dans une chaîne de caractère.
Si tu veux convertir un int en hex tu dois écrire ta fonction pour conversion d'une base à autre.
sprintf c'est une fonction de formatage de la sortie qui écrit la sortie dans une chaîne de caractère.
Si tu veux convertir un int en hex tu dois écrire ta fonction pour conversion d'une base à autre.
Re,
Un exemple
Un exemple
lami20j@debian:~/trash$ cat test_sprintf.c
#include<stdio.h>
#include<string.h>
int main()
{
int n=65, n2=0xE6;
char ch[10], hex[10], chex[20];
sprintf(ch,"%d",n);
sprintf(hex,"%X",n2);
printf("ch =%s et hex =%s \n",ch,hex);
printf("%d + %d = %d\n",n,n2,n+n2);
/* si tu essais l'addition sur deux chaines tu auras un message
à la compilation
sprintf.c:16: error: invalid operands to binary + (have 'char *' and 'char *')
printf("%d + %d = %d\n",ch,hex,ch+hex);
*/
strcpy(chex,ch);
strcat(chex,hex);
printf("%s\n",chex);
return 0;
}
lami20j@debian:~/trash$ gcc test_sprintf.c
lami20j@debian:~/trash$ ./a.out
ch =65 et hex =E6
65 + 230 = 295
65E6