博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
iniparser解析文件说明。
阅读量:7121 次
发布时间:2019-06-28

本文共 2937 字,大约阅读时间需要 9 分钟。

在工作中需要解析一些配置文件,而我解析的是  .ini  文件。基本格式为

[字段名]

Value=12 

下面是我自己写的一个解析文件源码

#include 
#include
#define FILE_PATH "Volume.ini"#define GET_FIELD_STATE_ON 1#define GET_FIELD_STATE_OFF 0#define GET_WORD_STATE_ON 1#define GET_WORD_STATE_OFF 0#define GET_VALUE_STATE_ON 1#define GET_VALUE_STATE_OFF 0#define GET_SYMBOL_STATE_ON 1#define GET_SYMBOL_STATE_OFF 0int iniGetValue(const char* fieldName , const char* wordName){ FILE *fp; char c; //获取的字符 char strName[20] = {
0}; int fieldFlag = 0; int wordFlag = 0; int valueFlag = 0; int symbolFlag = 0; int num = 0; int i = 0; fp = fopen (FILE_PATH,"r"); if (fp == NULL) { return -1; } while( 1 ) { c = fgetc(fp); if(feof(fp)) { break; } //获取数值 if (valueFlag == GET_VALUE_STATE_ON && c == '-') { symbolFlag = GET_SYMBOL_STATE_ON; } if (c == '\n' && valueFlag== GET_VALUE_STATE_ON && symbolFlag == GET_SYMBOL_STATE_ON) { num = 0 - num; symbolFlag = GET_SYMBOL_STATE_OFF; } if (c == '\n' && valueFlag == GET_VALUE_STATE_ON) { break; } if(c >= '0' && c <= '9' && valueFlag == GET_VALUE_STATE_ON ) { num = num * 10 + c - '0'; } //配对字 if (c == '=' && wordFlag == GET_WORD_STATE_ON) { if (strcmp (strName, wordName)==0) { wordFlag = GET_WORD_STATE_OFF; valueFlag = GET_VALUE_STATE_ON; } //memset(strName ,0 ,sizeof(strName)); //i = 0; } if (wordFlag == GET_WORD_STATE_ON && (c != ' ' || c != '\n')) { strName[i] = c; i++; } if(c == '\n') { memset(strName ,0 ,sizeof(strName)); i = 0; } //配对字段 getFieldName(c, strName); if(c == ']' && fieldFlag == GET_FIELD_STATE_ON ) { if (strcmp (strName, fieldName)==0) { wordFlag = GET_WORD_STATE_ON; } fieldFlag = GET_FIELD_STATE_OFF; // memset(strName ,0 ,sizeof(strName)); // i = 0; } if(fieldFlag == GET_FIELD_STATE_ON ) { strName[i] = c; i ++; } if (c == '[' && fieldFlag == GET_FIELD_STATE_OFF) { fieldFlag = GET_FIELD_STATE_ON; continue; } } fclose(fp); return num;}int main(){ int num = 0; num = iniGetValue("DTV", "Volume10"); printf("%d\n", num); return 0;}

比较繁琐局限也很大 但总的来说实现了十进制整型的解析条件。

后使用网上提供的一些免费的解析库文件  iniparser.c完成任务。

 

转载于:https://www.cnblogs.com/bingfang1408/p/10418126.html

你可能感兴趣的文章
eclipse运行maven项目,tomcat启动报错
查看>>
kali 安装grub theme
查看>>
Ubuntu安装JDK,搭建java环境
查看>>
AFNetworking框架下的SSL服务器证书的自定义验证
查看>>
redis——哈希(hash)
查看>>
开启Restful
查看>>
区块链100讲:带你走进EOS的存储系统
查看>>
图片上传至服务器实现压缩
查看>>
国外论坛BCH关注度暴涨
查看>>
如何更高效的管理原生微服务应用
查看>>
LAMP架构一
查看>>
hibernate中多对多关系映射时的xml文件
查看>>
PhalApi-OSS--阿里云OSS包
查看>>
stripslashes和addslashes的使用方法
查看>>
OSChina 周二乱弹 —— 从此鲜肉成屌丝
查看>>
OSChina 周六乱弹 —— 能胖出腹肌来
查看>>
SVN 命令测试
查看>>
oracle Interval 分区维护与管理要点
查看>>
Exsi6.5修改主机密码
查看>>
jdk自带4种多线程创建方式
查看>>