我希望Berkeley DB中的“key.data”有一个整数值。由于我们在Berkley DB中使用DBT结构,并且它具有“指向字节字符串的指针”,因此我使用memeber int为key创建了一个结构。但是现在我在访问存储在结构中的值时遇到了问题。以下是我的代码:
struct pearson_key{
int k;
};
struct pearson_key keyStruct;
DBT key
memset(&key, 0, sizeof(key));
memset(&keyStruct, 0, sizeof(struct pearson_key));
int k = 1;
keyStruct.k = k;
key.data = &keyStruct;
printf("value = %s",(char*)keyStruct);
key.size = sizeof(keyStruct);
打印空白值。我是C和结构的新手。我知道我的结构有问题,但不知道如何纠正它。提前谢谢。
答案 0 :(得分:0)
如果我是正确的,您希望通过key
访问和整数值。现在,您的密钥有一个指向字节字符串的指针。我不太确定,我认为它可能是一个无效指针(void *)
,因此它可以指向任何类型的数据。
无论如何,你可以做以下事情(假设我上面说的是真的):
key.data = (struct pearson_key *) &keyStruct;
访问值:
Value = (key.data)->k
答案 1 :(得分:0)
应该是:
printf("value = %d", keyStruct.k);
花点时间阅读C结构,指针和printf语法。
struct pearson_key{
int k;
};
struct pearson_key keyStruct;
DBT key;
memset(&key, 0, sizeof(key));
memset(&keyStruct, 0, sizeof(struct pearson_key));
keyStruct.k = 1;
key.data = &keyStruct;
key.size = sizeof(keyStruct);
printf("value = %d", keyStruct.k);