嘿,我有个小问题:
我定义了一个结构:
typedef struct {
char key [50][50];
char literal [50][50];
double numeral [50];
} skill_data;和一个函数:
skill_data *
mongoc_fetchSkillParameter (const bson_t *recipe, char *skill_id)
{
bson_iter_t iter;
bson_iter_t child1;
bson_iter_t child2;
bson_iter_t child3;
int i = 0;
skill_data *parameterset;
bson_iter_init(&iter, recipe);
if (bson_iter_find (&iter, "Skills") && BSON_ITER_HOLDS_ARRAY (&iter) && bson_iter_recurse (&iter, &child1)) {
printf ("Accessing sub-key \"%s\"\n", bson_iter_key (&iter));
bson_iter_next (&child1);
printf ("Accessing sub-key \"%s\"\n", bson_iter_key (&child1));
}
if (BSON_ITER_HOLDS_DOCUMENT (&child1) && bson_iter_recurse (&child1, &child2)) {
bson_iter_find(&child2, "ParameterSet");
printf ("Accessing sub-key \"%s\"\n", bson_iter_key (&child2));
}
if (BSON_ITER_HOLDS_DOCUMENT (&child2) && bson_iter_recurse (&child2, &child3)) {
i = 0;
while (bson_iter_next (&child3)) {
strcpy (parameterset->key[i], bson_iter_key (&child3));
if (bson_iter_type (&child3) == 0x01 || 0x10 || 0x12){
parameterset->numeral[i] = bson_iter_as_double (&child3);
}
else if (bson_iter_type (&child3) == 0x02){
strcpy (parameterset->literal[i], bson_iter_utf8 (&child3, NULL));
}
i++;
}
}
return parameterset;
}我正在尝试填充结构中的数组,然后将指针传递给main函数。据我所知,函数bson_iter_utf8()和bson_iter_key()都返回字符串上的指针:
const char *
bson_iter_utf8 (const bson_iter_t *iter, uint32_t *length);它在初始化简单数组时起作用,但现在嵌入到一个struct指针中,我似乎遇到了麻烦。谁能帮帮我?:)谢谢。
发布于 2021-08-11 14:15:52
在这里,您声明了一个指向skill_data的指针,但它实际上并没有指向任何分配的内存:
skill_data *parameterset;解决此问题的替代方法:
#include <stdlib.h>skill_data *parameterset = malloc(sizeof *parameterset);或
skill_data *parameterset = calloc(1, sizeof *parameterset); // zero-initialized注意:当你使用完指针时,你应该在它上面调用free。
https://stackoverflow.com/questions/68743606
复制相似问题