当前位置: 首页 > news >正文

linux+lvgl工程保存配置读取配置

typedef struct {int voltage;int current;int enable;
} system_cfg_t;system_cfg_t g_cfg;

写入config.ini

#include <stdio.h>int config_save(const char *path, system_cfg_t *cfg)
{FILE *fp = fopen(path, "w");if (!fp) {perror("fopen");return -1;}fprintf(fp, "[system]\n");fprintf(fp, "voltage=%d\n", cfg->voltage);fprintf(fp, "current=%d\n", cfg->current);fprintf(fp, "enable=%d\n", cfg->enable);fclose(fp);return 0;
}

读取config.ini

#include <stdio.h>
#include <string.h>
#include <stdlib.h>int config_load(const char *path, system_cfg_t *cfg)
{FILE *fp = fopen(path, "r");if (!fp) {perror("fopen");return -1;}char line[128];while (fgets(line, sizeof(line), fp)) {if (strncmp(line, "voltage=", 8) == 0) {cfg->voltage = atoi(line + 8);}else if (strncmp(line, "current=", 8) == 0) {cfg->current = atoi(line + 8);}else if (strncmp(line, "enable=", 7) == 0) {cfg->enable = atoi(line + 7);}}fclose(fp);return 0;
}

启动时调用

if (config_load("/mnt/data/config.ini", &g_cfg) != 0) {// 文件不存在就写默认值g_cfg.voltage = 220;g_cfg.current = 5;g_cfg.enable = 1;config_save("/mnt/data/config.ini", &g_cfg);
}

测试运行代码如下

#include <stdio.h>
#include <string.h>
#include <stdlib.h>typedef struct {int voltage;int current;int enable;
} system_cfg_t;/* 保存配置 */
int config_save(const char *path, system_cfg_t *cfg)
{FILE *fp = fopen(path, "w");if (!fp) {perror("fopen");return -1;}fprintf(fp, "[system]\n");fprintf(fp, "voltage=%d\n", cfg->voltage);fprintf(fp, "current=%d\n", cfg->current);fprintf(fp, "enable=%d\n", cfg->enable);fclose(fp);return 0;
}/* 读取配置 */
int config_load(const char *path, system_cfg_t *cfg)
{FILE *fp = fopen(path, "r");if (!fp) {perror("fopen");return -1;}char line[128];while (fgets(line, sizeof(line), fp)) {if (strncmp(line, "voltage=", 8) == 0) {cfg->voltage = atoi(line + 8);}else if (strncmp(line, "current=", 8) == 0) {cfg->current = atoi(line + 8);}else if (strncmp(line, "enable=", 7) == 0) {cfg->enable = atoi(line + 7);}}fclose(fp);return 0;
}/* 主测试函数 */
int main(void)
{system_cfg_t cfg;/* 先初始化一组测试数据 */cfg.voltage = 220;cfg.current = 5;cfg.enable  = 1;const char *path = "config.ini";system("pwd");printf("Saving config...\n");config_save(path, &cfg);/* 清零结构体,测试 load 是否真的生效 */memset(&cfg, 0, sizeof(cfg));printf("memset config\n");printf("voltage = %d\n", cfg.voltage);printf("current = %d\n", cfg.current);printf("enable  = %d\n", cfg.enable);printf("Loading config...\n");config_load(path, &cfg);printf("Config result:\n");printf("voltage = %d\n", cfg.voltage);printf("current = %d\n", cfg.current);printf("enable  = %d\n", cfg.enable);return 0;
}
http://www.jsqmd.com/news/409286/

相关文章:

  • XHS Agent 开发博客:用 AI 自动化小红书内容运营的技术实践
  • .net 8程序如何在信创的arm64架构下运行【nuget包如何判断能不能在arm架构跑呢】
  • 学术写作神器:9大自动目录生成软件,更新功能全面解析
  • Metasploit实战常见问题排查(10个高频问题,新手必看)
  • 高效论文工具:9款智能目录生成软件,支持实时自动更新
  • 题解:AcWing 883 高斯消元解线性方程组
  • 科研必备:9款论文目录生成工具,智能更新功能全解析
  • 2026最新Java毕设选题大全|零基础可做+源码现成+答辩稳过(软件专业专属)
  • cursor日志0224
  • HWiNFO(硬件检测工具)
  • 图片浏览器 XnViewMP
  • 闪贴键11
  • 中国AI发展趋势深度解读(非常详细),从小白到行业专家,收藏这一篇就够了!
  • 题解:AcWing 204 表达整数的奇怪方式
  • 极度注重隐私的浏览器
  • 未来世界生存指南(非常详细),拥抱AI从入门到精通,收藏这一篇就够了!
  • 题解:AcWing 878 线性同余方程
  • AI应用落地实操指南(非常详细),2026最新路线图,从入门到精通,收藏这一篇就够了!
  • 题解:AcWing 877 扩展欧几里得算法
  • FIQ 与 IRQ
  • Spring AI学习:聊天记忆
  • 题解:AcWing 876 快速幂求逆元
  • Kotlin程序员面试算法宝典【1.6】
  • 题解:AcWing 875 快速幂
  • 2026宜宾搬家优质品牌推荐:日式搬家、特惠搬家、短途搬运、空调移机、设备搬运、跨市搬家、运输公司、钢琴搬运选择指南 - 优质品牌商家
  • ACE Studio 联合 StepFun 开源了音乐生成基础模型 ACE-Step 1.5
  • 智能论文引用工具推荐:六大高效标注方案详解
  • 【完全免费】视频提取音频工具,视频转mp3格式,业界良心!视频一键提取mp3音频格式,操作简单不复杂!
  • RL的几种层次
  • 建筑浮雕优质厂家推荐:外墙eps线条/泡沫浮雕/泡沫浮雕构件/藏式线条/门窗装饰线条/eps欧式线条/选择指南 - 优质品牌商家