void hexdump(const void *p, size_t len)
{
int count = 1;
while (len--) {
if (count == 1)
fprintf(stderr, " %p: ", p);
fprintf(stderr, " %02x", *(unsigned char*)p++);
if (count++ == 16) {
fprintf(stderr, "\n");
count = 1;
}
}
if (count != 1)
fprintf(stderr, "\n");
}
stdout– 标准输出设备(printf(".."))同stdout。
stderr– 标准错误输出设备 两者默认向屏幕输出。但如果用转向标准输出到磁盘文件,则可看出两者区别。stdout输出到磁盘文件,stderr在屏幕。

本文深入解析了Hexdump函数的工作原理,展示了如何使用该函数进行内存数据的十六进制转储。通过具体代码示例,解释了函数内部实现,包括如何逐字节读取内存地址并转换为十六进制格式输出,以及如何控制每行输出的字节数。同时,文章对比了stdout和stderr在不同场景下的应用,强调了它们在重定向输出时的行为差异。
765

被折叠的 条评论
为什么被折叠?



