afficher une adresse memoire sans printf

afficher une adresse memoire sans printf - C - Programmation

Marsh Posté le 12-11-2013 à 22:05:35    

voilà tout est dans le titre  
 
je dois recoder la fontcion printf et j'ai juste un prblème pour le flag %p qui affiche l'adresse mémoire de la valeur pointé.
 
ce serait sympa de m'aider j'ai essayer plusieurs truc avec une fonction my_putstr qui utilise write et essayé write aussi directement donc, je ne sais plus quoi tester et a cours d'idées.
 
merci

Reply

Marsh Posté le 12-11-2013 à 22:05:35   

Reply

Marsh Posté le 12-11-2013 à 22:45:54    

Lorsque tu récupères l'adresse du pointeur dans ta fonction, via une instruction du genre, j'imagine :

Code :
  1. void * addr = va_arg(args, void *);


Tu peux voir cette valeur comme un entier. Tu as probablement déjà des fonctions pour afficher des entiers, alors utilises les directement.

 

Petite difficulté : la taille d'un pointeur varie selon l'archi. Par exemple sous Win32:

Code :
  1. sizeof (void*) == sizeof (int) == sizeof (long) == sizeof (int32_t)


Sur Win x64:

Code :
  1. sizeof (void *) == sizeof (long long) == sizeof (int64_t)
  2.  
  3. sizeof (int) == sizeof (long) == sizeof (int32_t)
 

Dans ce dernier cas, ne passe pas un (void *) à une fonction qui traite un (int).
... et ça différe encore sous Unix: c.f http://en.wikipedia.org/wiki/64-bi [...] ata_models


Message édité par tpierron le 12-11-2013 à 22:48:19
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed