配置文件中“键=值”(key=val)字符串C语言解析
来源:互联网 发布:新浪历史分笔数据接口 编辑:程序博客网 时间:2024/05/08 06:07
设有下面的配置文件(1.txt):
# 简单的“键值”配置文件样例# 支持“=”和“:”两种赋值方式# ① 注释语句采用'#'符号顶格写# ② “键”为由数字或大小写字母组成的串,“值”不限制# ③ “键”及“值”两边可以有空格、制表符(\t)# ③ 配置文件中可以存在空行XYZ=89abc:1233Y=78888N=111ABCM= ABC222Name : Zhang_001Mail: Hello@gmail.com PosX: 1900PosY : 900Data= 7,999,000
解析程序(里面主要用到了sscanf函数):
#include <stdio.h>#include <string.h>//// 删除一个字符串两端的空格//char *DelSpace(char *in);//// 【键】【值】数据结构定义//typedef struct{char key[50];char val[50];}KEY_VAL;void main(){//打开配置文件FILE *fp = fopen("1.txt", "r");if(!fp){printf("配置文件读取失败\n");return;}//定义【键】【值】,但这里没有用到KEY_VAL kv[100];memset(kv, 0x00, sizeof(kv));char tmp[100]; //存放配置文件的每一行//// 解析配置文件//while (fgets(tmp, 100, fp)){//忽略注释语句if (tmp[0] == '#') continue;//忽略空行语句if (tmp[0] == '\n')continue;char key[50] = {0};char val[50] = {0};if (strstr(tmp, "="))//【key=val】样式{sscanf(tmp, "%[0-9a-zA-Z\t ]=%s", key, val);}else if (strstr(tmp, ":"))//【key:val】样式{sscanf(tmp, "%[0-9a-zA-Z\t ]:%s", key, val);}//去掉【key】【val】字符串两边的空格char *k = DelSpace(key);char *v = DelSpace(val);//显示printf("源串: %s\t键= %s, 值= %s\n\n", tmp, k, v);}fclose(fp);}//// 删除一个字符串两端的空格//返回修改后的串,小心该函数会修改输入串//char *DelSpace(char *in){char *out = NULL;char *p = in;while((*p == ' ')||(*p == '\t')) p++;//略去字符串前面的空格out = p;//保存输出串地址while(1)//略去字符串后面的空格{if (*p == ' ')break;if (*p == '\n') break;if (*p == '\0') break;if (*p == '\t') break;p++;}*p = '\0';return out;}
- 配置文件中“键=值”(key=val)字符串C语言解析
- 配置文件中“键=值”(key=val)字符串C语言解析
- 在C语言中解析json配置文件
- 在C语言中解析JSON配置文件
- C语言中配置文件解析案例
- C语言--配置文件解析
- 配置文件解析函数(C语言)
- 配置文件解析函数(C语言)
- C语言字符串解析
- 【语言-C++】Xml处理(chenlu1):UTF-8 的中文Key= 中文Value的解析()
- C语言面向对象编程(六):配置文件解析
- 一段解析字符串中单词的C语言小程序
- C语言字符串函数解析
- c语言解析XML字符串
- C语言字符串解析程序
- LUA解析配置文件-C语言调用
- c指针应用:键值对"key=value"字符串,在开发中经常使用
- 【c基础练习】c语言实现配置文件解析
- C++周期串
- Android之完美退出方法(2.1-2.2-2.3SDK版本测试通过)
- MySQL 线上执行大事务 or 锁表操作 详解
- Asp.net gzip压缩的启用
- CVI更新数据库SQL的数据
- 配置文件中“键=值”(key=val)字符串C语言解析
- 理解学习
- 封装的Swing设置外观的类
- nyoj 117 逆序数(树状数组+离散化+sort结构体排序(注意!))
- pl/sql developer开发环境配置
- spring的切面的讲解
- Frogs' Neighborhood poj1659 判断度序列可图性
- 2011 Asia Beijing Regional Online Contest-1005 hdu4044 GeoDefense
- HDU1016 Prime Ring Problem (经典的深搜)