有一个功能,我想打电话
(void) get_bytes (void * ptr, int length)
函数有两个参数 第一个是缓冲区(通过该参数将收到数据) 我要阅读的第二个数据长度。
任务是使用此函数读取10个字节,并在屏幕上打印缓冲区(以十六进制的形式)。
我试过这种方式
char *buffer = malloc(sizeof(char) * 10);
get_bytes (buffer, sizeof(buffer));
for (int i = 0; i < 10; i++) {
printf("%s", buffer[i]);
}
但我得到printf行执行错误访问的例外, 请提供将缓冲区传递给此函数的正确方法
答案 0 :(得分:4)
你可能打算写
printf("%02x", (unsigned char)buffer[i]);
因为您将字符作为字符串的地址传递,这些字符串将无法正常工作。
答案 1 :(得分:1)
get_bytes (buffer, sizeof(buffer));
不正确...而不是返回char指针大小的sizeof(buffer)
,在这种情况下,你需要它指向的大小10
。