【发布时间】:2021-08-16 10:58:05
【问题描述】:
基本上我有一个存储我的常规程序设置的结构。我读入带有回调函数的配置以获取相应的值,但我无法将其写入结构。我已经尝试了从 memcpy 到 strcpy 到取消引用 char 指针的所有方法,但是每次结构中的 char 都保持为空。传递的字符串只包含一个字符,我检查了多次。此外,如果我将字符串 strcpy 到结构的其他字段,它工作正常。
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
struct {
char *datafile;
char *logfile;
char mode;
} general_settings;
void setSettingsData(void){
log_trace("parsing config file for general settings initialisation");
config_error_t rc = config_parse("config.ini", handle_settings_ini_file);
if (rc != CONFIG_ERROR_NONE) {
log_error("Error parsing configuration: %s on line %lu", config_get_error_string(rc), config_get_line_number());
} else {
log_info("Settings parsed successfully!");
}
}
static config_error_t handle_settings_ini_file(char *section, char *key, char *value) {
if(section != NULL && !strcmp("Allgemein", section)) {
if (!strcmp("mode", key)) {
general_settings.mode = strdup(value); // ??????
log_info("Program Execution mode set to %s", value);
} else {
log_fatal("Unrecognized setting. Check for typos. Exiting...");
exit(0);
}
}
return CONFIG_ERROR_NONE;
}
【问题讨论】: