c - 在 C 中将 char 写入 struct
问题描述
基本上我有一个存储我的一般程序设置的结构。我读入带有回调函数的配置以获取相应的值,但我无法将其写入结构。我已经尝试了从 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;
}
解决方案
既然value
是 a char *
,你就可以得到char
它指向 with *value
。
所以你想要general_settings.mode = *value;
.
你也可以使用general_settings.mode = value[0];
由于a[b]
与 相同*(a+b)
,*(value + 0)
因此与 相同value[0]
,也与 相同*value
。
推荐阅读
- javascript - 表单内的两个冲突按钮
- django - Django 静态文件 - 更改 URL
- javascript - 如何在 openLayer 地图中加载本地 gpx 文件?
- ionic-framework - 如何在离子列表中也有菜单图标的分隔线?
- reactjs - 如何使用酶测试“事件”?
- bash - bash 脚本中的制表符和换行符
- html - 导航栏按钮在调整大小时保持内联
- kubernetes - kubernetes 如何为副本编写部署 yaml
- ios - ios 11 sdk 更新是否可能影响了现有的 Objective-C 项目
- javascript - `Object.defineProperty(exports, "__esModule", { value: !0 })` 的目的是什么?