Open lilealyh opened 2 years ago
void kvdb_tarversal_sample(fdb_kvdb_t kvdb) { struct fdb_kv_iterator iterator; fdb_kv_t cur_kv; struct fdb_blob blob; size_t data_size; uint8_t *data_buf;
fdb_kv_iterator_init(&iterator); while (fdb_kv_iterate(kvdb, &iterator)) { cur_kv = &(iterator.curr_kv); data_size = (size_t) cur_kv->value_len; data_buf = (uint8_t *) malloc(data_size); if (data_buf == NULL) { rt_kprintf("Error: malloc failed.\n"); break; } fdb_blob_read((fdb_db_t) kvdb, fdb_kv_to_blob(cur_kv, fdb_blob_make(&blob, data_buf, data_size))); /* * balabala do what ever you like with blob... */ rt_kprintf("key:%s,data_buf:%s\n",cur_kv->name,data_buf); free(data_buf); }
} rt_kprintf("key:%s,data_buf:%s\n",cur_kv->name,data_buf);//data_buf数据是对的,但是cur_kv->name打印为空
看一下cur_kv->name_len,我记得fdb的key string好像不保证'/0'结尾 rt_kprintf("%.*s :\r\n", cur_kv->name_len, cur_kv->name);
rt_kprintf("%.*s :\r\n", cur_kv->name_len, cur_kv->name);
void kvdb_tarversal_sample(fdb_kvdb_t kvdb) { struct fdb_kv_iterator iterator; fdb_kv_t cur_kv; struct fdb_blob blob; size_t data_size; uint8_t *data_buf;
} rt_kprintf("key:%s,data_buf:%s\n",cur_kv->name,data_buf);//data_buf数据是对的,但是cur_kv->name打印为空