【问题标题】:Accessing values inside a structure in Berkeley DB using C使用 C 访问 Berkeley DB 中结构内的值
【发布时间】:2011-08-25 06:22:25
【问题描述】:

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

【问题讨论】:

    标签: c pointers berkeley-db structure


    【解决方案1】:

    如果我是正确的,您想通过您的key 访问整数值。现在,您的密钥有一个指向字节字符串的指针。我不太确定,我认为它可能是一个空指针(void *),因此它可以指向任何类型的数据。

    无论如何你都可以做到以下几点(假设我上面说的是真的):

    key.data = (struct pearson_key *) &keyStruct;
    

    访问值:

    Value = (key.data)->k
    

    【讨论】:

    • @nOnChun: 打印值,现在我做了 (char*)keyStruct...这行得通吗??
    • keyStruct 是 struct 类型的变量,因此您需要使用 . [点] 运算符。此外,由于您要打印整数,请使用 atoi 将字符串转换为整数或使用 %d 打印。但是,您的问题需要更多描述。希望你的同龄人能比我更好地帮助你。
    【解决方案2】:

    应该是:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-08-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多