Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2323 connectés 

  FORUM HardWare.fr
  Programmation
  C++

  [Ansi C] caster un int en char* [resolu]

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[Ansi C] caster un int en char* [resolu]

n°366027
Burps
Posté le 18-04-2003 à 10:30:52  profilanswer
 

C'est pourtant simple, mais ca marche pas :  

Code :
  1. char *toto;
  2. int ip_proto;
  3. toto = (char *)ip_proto;

 
 
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
mood
Publicité
Posté le 18-04-2003 à 10:30:52  profilanswer
 

n°366031
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 18-04-2003 à 10:36:06  profilanswer
 

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() !


---------------
J'ai un string dans l'array (Paris Hilton)
n°366032
Taz
bisounours-codeur
Posté le 18-04-2003 à 10:36:28  profilanswer
 

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

n°366036
weblook$
happy face
Posté le 18-04-2003 à 10:39:01  profilanswer
 

toto est de type pointeur, il attend donc d'être initialisé avec une adresse:
 

Code :
  1. toto=(char*)&ip_proto;

n°366041
Taz
bisounours-codeur
Posté le 18-04-2003 à 10:41:19  profilanswer
 

de toutes façons, on sait pas ce qu'il veut faire   [:spamafote]

n°366047
Burps
Posté le 18-04-2003 à 10:42:54  profilanswer
 

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 ;)

n°366051
theshockwa​ve
I work at a firm named Koslow
Posté le 18-04-2003 à 10:44:19  profilanswer
 

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 :
  1. char toto[30];
  2. int ip_proto=1234;
  3. snprintf(toto, 30, "%d", ip_proto);
  4. toto[29]=0;


 
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 :
  1. int ip_proto=1234;
  2. char *toto = (char *)&ip_proto;


 
sinon, tu peux toujours utiliser un passage par des structs (qui parait quand même un peu plus propre)
 

Code :
  1. union add_ip {
  2.   int add_totale;
  3.   struct add_chars {
  4.     char d, c, b, a; // L'ordre des variables est important ...
  5.   };
  6. };


 
voilà voilà ... :D


---------------
last.fm
n°366054
Taz
bisounours-codeur
Posté le 18-04-2003 à 10:44:55  profilanswer
 

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 :
  1. char buffer[80];
  2. sprintf(buffer, "%d", 0xdeadbeef);

arghhhhh


Message édité par Taz le 18-04-2003 à 10:45:23
n°366055
theshockwa​ve
I work at a firm named Koslow
Posté le 18-04-2003 à 10:45:43  profilanswer
 

J'ai bien pris mon temps pour répondre ... Pas étonnant que je me sois-fait grillaid aux 3/4 :D


---------------
last.fm
n°366056
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 18-04-2003 à 10:45:46  profilanswer
 

++Taz a écrit :

de toutes façons, on sait pas ce qu'il veut faire   [:spamafote]  


A mon avis, il veut considérer son int comme un caractère ?
Ou alors faire un truc du style  
 
printf("%d",ip_proto);
 
:??:


---------------
J'ai un string dans l'array (Paris Hilton)
mood
Publicité
Posté le 18-04-2003 à 10:45:46  profilanswer
 

n°366060
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 18-04-2003 à 10:46:19  profilanswer
 

theShOcKwAvE a écrit :

J'ai bien pris mon temps pour répondre ... Pas étonnant que je me sois-fait grillaid aux 3/4 :D


+1 :/


---------------
J'ai un string dans l'array (Paris Hilton)
n°366073
Burps
Posté le 18-04-2003 à 10:52:54  profilanswer
 

merci pour toutes vos precisions
A mon tour de preciser  
 
 
 
 

Code :
  1. int ip_proto = 17;
  2. char *toto,*blu;
  3. toto=(char*)&ip_proto;
  4. blu="\0"
  5. strcat (blu,toto);

 
 
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....)


Message édité par Burps le 18-04-2003 à 11:00:12
n°366085
Taz
bisounours-codeur
Posté le 18-04-2003 à 10:57:12  profilanswer
 

boom :spookie:

n°366106
Burps
Posté le 18-04-2003 à 11:06:46  profilanswer
 

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

n°366114
Taz
bisounours-codeur
Posté le 18-04-2003 à 11:09:47  profilanswer
 

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


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C++

  [Ansi C] caster un int en char* [resolu]

 

Sujets relatifs
[SWING + THREAD] Création d'une console - RESOLU[RESOLU][JTree][JPopupMenu] Créer un menu contextuel (clic droit)
Exécuter un programme php automatiquement [résolu]bug dans mon programme vb.net besoin d'aide ( resolu)
Lecture et ecriture sur des ports tcp [Resolu] MerciUtiliser les etats d'access à partir de VB... (RESOLU)
[Oracle&SQL].sql contenant la creation de plusieurs triggers (RESOLU)[Résolu] Espace non désiré sous une image dans un tableau
is, isw routines...[résolu]SQL petit problème...[Résolu]
Plus de sujets relatifs à : [Ansi C] caster un int en char* [resolu]


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR