Drucken eines void* Variablen in C
Hallo an alle ich will ein Debuggen mit printf. Aber ich weiß nicht, wie drucken Sie die "out" - variable.
Vor der Rückkehr, will ich drucken Sie diesen Wert, aber der Typ 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 <= '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;
}
Wie kann ich tun? Danke.
InformationsquelleAutor der Frage sharkbait | 2013-03-08
Du musst angemeldet sein, um einen Kommentar abzugeben.
:
impliziert, dass
out
ist in der Tat ein Zeiger aufuint8_t
so dass Sie vielleicht wollen, um die Daten zu drucken, die tatsächlich dort. Beachten Sie auch, dass Sie nicht brauchen, um Stimmen ausvoid *
in C, so ist der cast ist wirklich sinnlos.Dem code zu tun scheint, hex zu Binär-Konvertierung, Speicherung der Ergebnisse in
out
. Sie können drucken, diei
generierten Byte-by-doing:Den - Zeiger-Wert selbst ist selten interessant, aber können Sie es drucken mit
printf("%p\n", out);
. Die%p
Formatierung Planer ist fürvoid *
.InformationsquelleAutor der Antwort unwind
ist die richtige Art zu drucken
(void*)
Zeiger.InformationsquelleAutor der Antwort Graham Borland
Dem Formatbezeichner für den Druck void-Zeiger mit
printf
in C ist%p
. Was wird in der Regel gedruckt wird, ist eine hexadezimale Darstellung der Zeiger (obwohl der standard sagt einfach, dass es eine von der Implementierung definierte Zeichenfolge definieren einen Zeiger).InformationsquelleAutor der Antwort dasblinkenlight