使用C在Berkeley DB中不打印“key.data”的正确值

时间:2011-08-26 06:04:05

标签: c berkeley-db

我是Berkeley DB的新手并使用在线指南学习。现在我有以下代码:

DB *dbp;
DBT key, data;
int ret, t_ret;
int k = 1;

key.data = &(k);
key.size = sizeof(k);
memset(&key, 0, sizeof(key));

if ((ret = dbp->put(dbp, NULL, &key, &data, 0)) == 0)
{
    printf("db: %d: key stored.\n", (char*)key.data);
}

现在printf语句而不是返回值“1”,正在返回其他内容。不知道我哪里错了。

1 个答案:

答案 0 :(得分:1)

由于key.data是void *,因此您需要取消引用它以获取值。尝试:

printf("db: %d: key stored.\n", *(int*)key.data);