老师,我想请教一个关于void *的问题;

来源:8-1 从抽象到面向对象编程

mahsiaoko

2020-03-25

老师,您好!我现在有一个数组buf,她里面包含以下内容;
buf[0]位置存储的是一个数字,假设为name_len,
buf[1]到buf[name_len]存储的是一个字符串,之后,

buf[name_len+1]='\0';
buf[name_len+2]='E';

在name_len+3处,是:

memcpy(buf + name_len + 3, &type, 2);

其中,type的值是1;
最后,

typedef struct knot_db_val {
  void *data;
  size_t len;
} knot_db_val_t;

(knot_db_val_t){ buf + 1, name_len + 4 }

目前,我想知道上面的void* data里面存储的具体的形式,我该怎么处理,我现在不管怎么操作,对于上面的type输出之后都是乱码,就是之前buf里面的1到name_len+2这个范围内的输出正常,但是之后的部分,不能正常输出。

写回答

1回答

quickzhao

2020-03-26

乱码是因为解析的方式不对,你先弄清这里到底存储的是什么编码方式的数据。

0
2
quickzhao
回复
mahsiaoko
去查一下printf的使用说明,如果要是直接输出内容其实可以使用C++ cout,看原始内容直接调试看内存。
2020-03-26
共2条回复

重学C++ ,重构你的C++知识体系

一部大片,一段历史,构建C++知识框架的同时重塑你的编程思维

3884 学习 · 1103 问题

查看课程