Impression d'une variable void * en C
Salut à tous je veux faire un debug avec printf. Mais je ne sais pas comment faire pour imprimer le "dehors" à la variable.
Avant le retour, je veux imprimer cette valeur, mais il est de type void* .
int
hexstr2raw(char *in, void *out) {
char c;
uint32_t i = 0;
uint8_t *b = (uint8_t*) out;
while ((c = in[i]) != '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 <= '9') {
v = c - '0';
} else if (c >= 'A' && c <= 'F') {
v = 10 + c - 'A';
} else if (c >= 'a' || c <= 'f') {
v = 10 + c - 'a';
} else {
return -1;
}
if (i%2 == 0) {
b[i/2] = (v << 4);
printf("c='%c' \t v='%u' \t b[i/2]='%u' \t i='%u'\n", c,v ,b[i/2], i);}
else {
b[i/2] |= v;
printf("c='%c' \t v='%u' \t b[i/2]='%u' \t i='%u'\n", c,v ,b[i/2], i);}
i++;
}
printf("%s\n", out);
return i;
}
') {
uint8_t v;
if (c >= '0' && c <= '9') {
v = c - '0';
} else if (c >= 'A' && c <= 'F') {
v = 10 + c - 'A';
} else if (c >= 'a' || c <= 'f') {
v = 10 + c - 'a';
} else {
return -1;
}
if (i%2 == 0) {
b[i/2] = (v << 4);
printf("c='%c' \t v='%u' \t b[i/2]='%u' \t i='%u'\n", c,v ,b[i/2], i);}
else {
b[i/2] |= v;
printf("c='%c' \t v='%u' \t b[i/2]='%u' \t i='%u'\n", c,v ,b[i/2], i);}
i++;
}
printf("%s\n", out);
return i;
}
Comment puis-je faire? Merci.
source d'informationauteur sharkbait
Vous devez vous connecter pour publier un commentaire.
Ce:
implique que
out
est en fait un pointeur versuint8_t
alors peut-être que vous voulez imprimer les données de la réalité. Notez également que vous n'avez pas besoin de jeter devoid *
dans C, de sorte que le casting est vraiment inutile.Le code semble être de faire hex de conversion en binaire, en stockant le résultat à
out
. Vous pouvez imprimer lai
octets générés par:La la valeur du pointeur lui-même est rarement intéressant, mais vous pouvez l'imprimer avec
printf("%p\n", out);
. Le%p
mise en forme spécifique est pourvoid *
.est la bonne façon d'imprimer un
(void*)
pointeur.Le spécificateur de format pour l'impression de vide à l'aide de pointeurs
printf
en C est%p
. Ce qui est imprimé est une représentation hexadécimale du pointeur (bien que la norme dit simplement que c'est une mise en œuvre définies à la séquence de caractères de la définition d'un pointeur).