【发布时间】:2014-01-21 15:04:49
【问题描述】:
我有一个无符号字符数组unsigned char* name = malloc(nameLength); - 如何使用 printf 打印它? %s 似乎不能正常工作,%u 也不能正常工作(看到随机图标)。
以下是我创建要打印的数据的方法:
__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
【问题讨论】:
-
如果
name包含一个以空字符结尾的可打印字符字符串,那么printf格式%s将起作用。这就是它的用途。数组中有什么,只是任意数字?可以多分享一点吗? -
你没有给我们足够的信息。阅读sscce.org
-
我添加了更多信息@KeithThompson
-
如果它以空值终止,%s 应该可以工作。由于最后有空闲空间,请尝试在此处手动写入 \0,然后再试一次。
-
@gnometorule 在我这样做的代码中 -
name[nameLength] = 0
标签: c char printf unsigned-char