我对 C 比较陌生。我有一个要打印到标准输出的二进制缓冲区,如下所示:
unsigned char buffer[1024];
Run Code Online (Sandbox Code Playgroud)
有没有办法使用 printf 将其输出到 stdout?我查看了 printf 的手册页,但是没有提到 an unsigned char*,只有const char*for %s。
我想我可以遍历缓冲区并执行putchar(buffer[i]),但是我认为这效率很低。有没有办法使用 printf 做到这一点?我应该改用类似的东西fwrite,那会更合适吗?
谢谢。
编辑:抱歉造成混乱,我不想将任何内容转换为十六进制/二进制表示法,只需按原样写出缓冲区即可。例如,如果我[0x41 0x42 0x42 0x41]在缓冲区中,那么我想打印“ABBA”。
正如@redneb 所说,fwrite应该用于此:
#include <stdio.h>
size_t size = sizeof(buffer); /* or however much you're planning to write */
fwrite(buffer, 1, size, stdout);
Run Code Online (Sandbox Code Playgroud)