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

简易键值对文本解析

除了json,xml,protobuf等成体系的配置文件外,简单的文本格式“key value”的配置文件也在很多开源项目中存在,这种配置文件的好处是简单、易于理解和编辑。

#include <stdio.h>
#include <string.h>#define MAX_LINE_LENGTH 1024void ParseConfig(const char *filePath)
{FILE *file = fopen(filePath, "r");if (file == NULL){perror("Error opening file");return;}char line[MAX_LINE_LENGTH];while (fgets(line, sizeof(line), file) != NULL){// 去掉行末尾的换行符line[strcspn(line, "\r\n")] = '\0';// 忽略注释和空行if (line[0] == '#' || line[0] == '\0'){continue;}// 解析配置项char *key = strtok(line, " \t");char *value = strtok(NULL, " \t");if (key != NULL && value != NULL){printf("%s   %s\n", key, value);}}fclose(file);
}int main()
{const char *filePath = "config.txt";ParseConfig(filePath);return 0;
}

相关文章:

  • LINUX入门篇【10】---进程篇【2】---进程状态
  • TCP/IP协议、三次握手、四次挥手
  • <JavaEE> 什么是线程(Thread)?进程和线程有什么区别?
  • 性能优化中使用Profiler进行内存泄露的排查及解决方式
  • Linux 中的 ls 命令使用教程
  • anacoda 在 git 远程仓库的时候遇到 SSL 无法访问和字节缓冲太小和换源以及无法连接到官网和字节写入冲突
  • Linux——使用命令查看文件和文件夹数量
  • react项目自行配置热更新
  • 1-1、汇编语言概述
  • 【Python】巧用tkinter设计秒表计时器
  • linux下的工具---vim
  • 电力感知边缘计算技术网关产品设计方案-硬件方案
  • Kafka 集群如何实现数据同步
  • mysql使用--存储程序
  • 切换服务器上自己用户目录下的 conda 环境和一个外部的 Conda 环境
  • [PHP内核探索]PHP中的哈希表
  • 时间复杂度分析经典问题——最大子序列和
  • 收藏网友的 源程序下载网
  • AHK 中 = 和 == 等比较运算符的用法
  • css布局,左右固定中间自适应实现
  • Docker下部署自己的LNMP工作环境
  • es6(二):字符串的扩展
  • Git初体验
  • LeetCode541. Reverse String II -- 按步长反转字符串
  • Mithril.js 入门介绍
  • node 版本过低
  • Vue.js源码(2):初探List Rendering
  • 从0到1:PostCSS 插件开发最佳实践
  • 番外篇1:在Windows环境下安装JDK
  • 翻译--Thinking in React
  • 工作手记之html2canvas使用概述
  • 如何借助 NoSQL 提高 JPA 应用性能
  • 正则表达式
  • 智能合约Solidity教程-事件和日志(一)
  • 白色的风信子
  • ​iOS安全加固方法及实现
  • #mysql 8.0 踩坑日记
  • #NOIP 2014# day.1 生活大爆炸版 石头剪刀布
  • #调用传感器数据_Flink使用函数之监控传感器温度上升提醒
  • $.extend({},旧的,新的);合并对象,后面的覆盖前面的
  • (11)MATLAB PCA+SVM 人脸识别
  • (14)学习笔记:动手深度学习(Pytorch神经网络基础)
  • (Matlab)遗传算法优化的BP神经网络实现回归预测
  • (删)Java线程同步实现一:synchronzied和wait()/notify()
  • (十一)c52学习之旅-动态数码管
  • (转)关于如何学好游戏3D引擎编程的一些经验
  • ./configure,make,make install的作用
  • .axf 转化 .bin文件 的方法
  • .Net Remoting常用部署结构
  • .net web项目 调用webService
  • .Net 垃圾回收机制原理(二)
  • .NET 线程 Thread 进程 Process、线程池 pool、Invoke、begininvoke、异步回调
  • .Net 转战 Android 4.4 日常笔记(4)--按钮事件和国际化
  • .net/c# memcached 获取所有缓存键(keys)
  • .NET/C# 阻止屏幕关闭,阻止系统进入睡眠状态