C printf unsigned char array
Habe ich ein unsigned char-array unsigned char* name = malloc(nameLength);
- wie kann ich drucken Sie es mit printf? %s
nicht richtig zu funktionieren scheint, auch nicht %u
(sehen zufällige Symbole).
Hier ist, wie Erzeuge ich Daten, die ich drucken möchten:
__int32 nameLength;
ReadProcessMemory(hProcess, (LPCVOID)(classNamePtr + 0x0004), &nameLength, sizeof(__int32), 0); //Reads nameLength to be 13 in this case
unsigned char* name = malloc(nameLength+5); //Add 5 for good measure, it is null terminated
ReadProcessMemory(hProcess, (LPCVOID)(nameStrPtr), name, nameLength, 0);
name[nameLength] = 0; //null terminate
printf("%s", name); //Outputs single character strange characters, like an up icon
Wenn
Sie haben nicht uns genug Informationen. Lesen Sie sscce.org
Ich habe einige weitere Informationen @KeithThompson
Wenn es null-terminiert, %s, sollte funktionieren. Wie Sie überflüssige Leerzeichen am Ende, versuchen Sie, manuell zu schreiben \0 gibt, und versuchen Sie es erneut.
In dem code, den ich tun -
name
enthalten eine null-terminierte Zeichenkette aus druckbaren Zeichen, dann die printf
format %s
funktionieren würde. Das ist, was es ist. Was ist in dem array, nur willkürliche zahlen? Können Sie uns ein wenig mehr?Sie haben nicht uns genug Informationen. Lesen Sie sscce.org
Ich habe einige weitere Informationen @KeithThompson
Wenn es null-terminiert, %s, sollte funktionieren. Wie Sie überflüssige Leerzeichen am Ende, versuchen Sie, manuell zu schreiben \0 gibt, und versuchen Sie es erneut.
In dem code, den ich tun -
name[nameLength] = 0
InformationsquelleAutor Christian Stewart | 2014-01-03
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wenn man feststellt, dass eine nicht-druckbare char, Ausgabe einer escape-Sequenz oder ein hexadezimaler Wert
Wenn
data
enthalten eine jedes byte, Probe folgt:\0...\6\a\b\t\n\v\f\xD\xE\xF\x10...\x1F !\"#$%&\'()*+,-./0123456789:;<=>\?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~\x7F...\xFE\o377
Die Selektion von escape-Sequenzen variieren mit der code-Ziele. Der Satz oben versucht zu entsprechen, etwas, das ein C-parser akzeptiert werden.
Hinweis: Mit der letzten
else
immer die Ausgabe eine 3-stellige oktal-Sequenz Scannen Vorteile, aber die Leute sind mehr daran gewöhnt, hexadezimal als oktal.Bereinigt um bedingt print in hex, je nach dem Zeichen folgt.
InformationsquelleAutor chux