使用C访问Berkeley DB中结构内的值

时间:2011-08-25 06:22:25

标签: c pointers berkeley-db structure

我希望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和结构的新手。我知道我的结构有问题,但不知道如何纠正它。提前谢谢。

2 个答案:

答案 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);