gpt4 book ai didi

无法将数据写入结构

转载 作者:行者123 更新时间:2023-11-30 15:24:31 25 4
gpt4 key购买 nike

qq4all.我有一个任务 - 为如下语法编写配置解析器:

[module]
name = first
imitationType = first

[module]
name = second
imitationType = second

等等。我发现了漂亮的配置解析器 - inih ,但我不能强制它按我想要的方式工作。这是我的代码,是通过 inih 示例编写的:

typedef struct {
const char* name;
const char* imitation_type;
} module_config;

int module_count = 0;

static int handler(void* user, const char* section, const char* name,
const char* value)
{
module_config* pconfig = (module_config*)user;
pconfig = (module_config *) malloc(module_count*sizeof(module_config));
#define MATCH(s, n) strcmp(section, s) == 0 && strcmp(name, n) == 0
if (strcmp(section, "module") == 0) {
if (MATCH("module", "name")) {
pconfig[module_count]->version = strdup(value);
} else if (MATCH("module", "imitationType")) {
pconfig[module_count]->name = strdup(value);
} else {
return 0; /* unknown section/name, error */
}
++module_count;
pconfig = (module_config *) realloc(pconfig, module_count * sizeof(module_config));
}

return 1;
}

但是,当我尝试编译它时,我收到下一个错误:

Error! Expression for '->' must be 'pointer to struct or union'

对于这些行:

pconfig[module_count]->version = strdup(value);
pconfig[module_count]->name = strdup(value);

我是编程新手,不明白为什么会发生这种情况。请帮忙:-)

最佳答案

pconfig 是指向 module_config 结构体实例的指针。

在此指针上使用 pconfig[module_count] 相当于取消引用指针 (pconfig+module_count),即相当于 *(pconfig+module_count)

因此,pconfig[module_count] 不再是一个指针。您需要使用 pconfig[module_count].version(pconfig+module_count)->version

关于无法将数据写入结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28378574/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com