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
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. -
Re,
Un exemplelami20j@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 -