snprintf(buffer, 33, "%X", i);
%X pour de l'hexa en majuscules
%x pour de l'hexa en minuscules
La seule base "commune" que ne permettent pas sprintf() et ses soeurs, c'est le binaire.
snprintf(buffer, 33, "%X", i);
%X pour de l'hexa en majuscules
%x pour de l'hexa en minuscules
La seule base "commune" que ne permettent pas sprintf() et ses soeurs, c'est le binaire.
SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.
"Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
Apparently everyone. -- Raymond Chen.
Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.
Question bête : elle sert à quoi la fonction itoa ? Si c'est pour convertir en entier en base N, j'ai ça qui traine :
string doit être assez grand mais il doit être assez simple d'allouer la chaîne à l'intérieur de la fonction (si tu y arrive, le résultat m'interesse
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43 char *itoa(int value, char *string, int radix) { char tmp[32]; char *tp = tmp; int i; unsigned v; int sign; char *sp; if (radix > 36 || radix <= 1) return 0; sign = (radix == 10 && value < 0); if (sign) v = -value; else v = (unsigned)value; while (v || tp == tmp) { i = v % radix; v = v / radix; if (i < 10) *tp++ = i+'0'; else *tp++ = i + 'A' - 10; } sp = string; if (sign) *sp++ = '-'; while (tp > tmp) *sp++ = *--tp; *sp = 0; return string; })
Désolé pour le retard![]()
Pour l'avoir en entier il suffit de mettre d a la place de x comme dans ceci :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 #include <stdio.h> #include <stdlib.h> int main () { char i=80; char buffer[33]; printf ("Avant itoa %d\n",i); snprintf(buffer, 33, "%d", i); printf ("Apres itoa %s\n",buffer); system ("pause"); return 0; }
Si je ne me trompe pas la formule qui donne la taille de la chaîne est len = (int)(ln(value)/ln(radix)) + 2.Envoyé par gege2061
ln est le log népérien. +2 pour mettre le zéro terminal.
"La haine seule fait des choix" - Koan Zen
"Il ne faut pas être meilleur que les autres, il faut être meilleur que soi." Albert Jacquard
"Ceux qui savent où ils ont posé leur parapluie ne sont pas alcooliques." - pgibonne.
Faites du Prolog, ça vous changera les idées !
Ma page Prolog
Mes codes sources commentés
Mon avatar : La Madeleine à la veilleuse de Georges de La Tour
Partager