caster un int en char* [resolu] [Ansi C] - C++ - Programmation
Marsh Posté le 18-04-2003 à 10:36:06
attends, c'est énorme ce que tu fais la ! tu transformes une valeur numérique en une adresse mémoire !!!! ne t'étonne pas si ça te pète au nez !
si tu veux transformer un int en chaine de caractères, alors utilise la fonction itoa() !
Marsh Posté le 18-04-2003 à 10:36:28
si tu expliqué ce que tu veux faire? parce que aucune de tes variables n'est initialisés, c'est correct syntaxiquement (tout et n'importe quoi compile) et le résultat est un comportement parfaitement indéfini
Marsh Posté le 18-04-2003 à 10:39:01
toto est de type pointeur, il attend donc d'être initialisé avec une adresse:
Code :
|
Marsh Posté le 18-04-2003 à 10:42:54
pfff...
Merci Weblook, ct juste ca la soluce...
Sinon, Harkonnen, itoa() n'est pas ANSI-C, desole
Et ;merci a tous ceux ki ont bien voulu m'aider
Marsh Posté le 18-04-2003 à 10:44:19
Attend ... Ce n'est pas un type cast qu'il te faut, là ...
A ta place, je passerais plutôt par un sprintf ...
Là, ce que tu fais, c'est que tu lui dis que ton char * pointe sur la pseudo adresse contenue dans ton int ... Donc forcément, ca marche à la compilation, mais à l'exec, ton pointeur n'est pas du tout au bon endroit ...
Code :
|
là, ca te convertit ton int en chaine de caractères ... MAis si c'est une adresse ip (c'est ce à quoi me fait penser ip_proto)
la décomposition en 4 char se ferait plutôt comme ca :
Code :
|
sinon, tu peux toujours utiliser un passage par des structs (qui parait quand même un peu plus propre)
Code :
|
voilà voilà ...
Marsh Posté le 18-04-2003 à 10:44:55
apprends ce que ça veut dire un cast. maintenant si ce que tu veux c'est créer une chaine de caractère, représentation textuelle d'un int, essaye sprintf
Code :
|
arghhhhh
Marsh Posté le 18-04-2003 à 10:45:46
++Taz a écrit : de toutes façons, on sait pas ce qu'il veut faire |
A mon avis, il veut considérer son int comme un caractère ?
Ou alors faire un truc du style
printf("%d",ip_proto);
Marsh Posté le 18-04-2003 à 10:46:19
theShOcKwAvE a écrit : J'ai bien pris mon temps pour répondre ... Pas étonnant que je me sois-fait grillaid aux 3/4 |
+1
Marsh Posté le 18-04-2003 à 10:52:54
merci pour toutes vos precisions
A mon tour de preciser
Code :
|
Voila ske je veux faire.
D'autre part, je peux pas utiliser printf : stdlib.h (ou string.h, je sais plus a laquelle il appartient) n'est pas compatible avec types.h (une histoire de userland/kernel....)
Marsh Posté le 18-04-2003 à 11:06:46
enfin... je me rends compte ke je suis pas tres explicite :
Je veux ajouter a "*blu ", ki contient deja du texte, la valeur de ip_proto
Mais j'ai encore un souci : une fois caste, toto designe ceci : "17 '\021' "
et donc, probleme, toute la chaine vient s'ajouter a mon "blu"
Or, seul le 17 m'interesse
Marsh Posté le 18-04-2003 à 11:09:47
t'as pas l'impression qu'il te manque des allocations de mémoire? apres si tu peux pas utiliser les bibliotheques standard,c 'est que ton environnement n'est pas ANSI, donc on peut rien pour toi
Marsh Posté le 18-04-2003 à 10:30:52
C'est pourtant simple, mais ca marche pas :
Ca compile tres bien, mais a l'execution, , quand je debugge, le contenu est pas le bon (Address 0x11 out of bounds)
Je pesne qu'a priori je caste mal mon int : c koi la bonne solutin ?
Message édité par Burps le 18-04-2003 à 10:43:25