Imprimer une variable void * en C

Bonjour à tous, je veux faire un débogage avec printf. Mais je ne sais pas comment imprimer la variable “out”.

Avant le retour, je souhaite imprimer cette valeur, mais son type est void *.

int hexstr2raw(char *in, void *out) { char c; uint32_t i = 0; uint8_t *b = (uint8_t*) out; while ((c = in[i]) != '\0') { uint8_t v; if (c >= '0' && c = 'A' && c = 'a' || c <= 'f') { v = 10 + c - 'a'; } else { return -1; } if (i%2 == 0) { b[i/2] = (v << 4); printf("c='%c' \tv='%u' \tb[i/2]='%u' \ti='%u'\n", c,v ,b[i/2], i);} else { b[i/2] |= v; printf("c='%c' \tv='%u' \tb[i/2]='%u' \ti='%u'\n", c,v ,b[i/2], i);} i++; } printf("%s\n", out); return i; } 

Comment puis-je faire? Merci.

    Ce:

     uint8_t *b = (uint8_t*) out; 

    implique que out est en fait un pointeur sur uint8_t , alors vous souhaitez peut-être imprimer les données qui se uint8_t réellement là. Notez également que vous n’avez pas besoin de lancer de void * en C, la dissortingbution est donc vraiment inutile.

    Le code semble faire la conversion hexadécimal en binary, stockant les résultats à l’ out . Vous pouvez imprimer les octets générés en faisant:

     int j; for(j = 0; j < i; ++j) printf("%02x\n", ((uint8_t*) out)[j]); 

    La valeur du pointeur lui-même est rarement intéressante, mais vous pouvez l’imprimer avec printf("%p\n", out); . Le spécificateur de formatage %p est pour void * .

     printf("%p\n", out); 

    est le moyen correct d’imprimer un pointeur (void*) .

    Le spécificateur de format pour l’impression de pointeurs vides à l’aide de printf en C est %p . Ce qui est généralement imprimé est une représentation hexadécimale du pointeur (bien que la norme indique simplement qu’il s’agit d’une séquence de caractères définie par une implémentation définissant un pointeur).