Trim(buf);
// to skip text comment with flags /* ... */
if (buf[0] != '#' && (buf[0] != '/' || buf[1] != '/'))
if (strstr(buf, "/*") != NULL)
text_comment = 1;
continue;
else if (strstr(buf, "*/") != NULL)
text_comment = 0;
continue;
if (text_comment == 1)
continue;
int buf_len = strlen(buf);
// ignore and skip the line with first chracter '#', '=' or '/'
if (buf_len <= 1 || buf[0] == '#' || buf[0] == '=' || buf[0] == '/')
continue;
buf[buf_len-1] = '\0';
char _paramk[MAX_KEY_LEN] = {0}, _paramv[MAX_VAL_LEN] = {0};
int _kv=0, _klen=0, _vlen=0;
int i = 0;
for (i=0; i
= MAX_KEY_LEN)
break;
_paramk[_klen++] = buf[i];
continue;
else if (buf[i] == '=')
_kv = 1;
continue;
// scan param key value
if (_vlen >= MAX_VAL_LEN || buf[i] == '#')
break;
_paramv[_vlen++] = buf[i];
if (strcmp(_paramk, "")==0 || strcmp(_paramv, "")==0)
continue;
printf("%s=%s\n", _paramk, _paramv);
return 0;
int main()
loadConfigDemo("./test.conf");
return 0;
其中用于测试的配置文件如下:
# basic
version=1
// for testing line comment
# fan settings
fan_temp_level=2
fan_pre_heat=1
/* test text comment = test text comment
test text comment = test text comment
// just for test
# /* just for test
# wash
wash_water_temp_level = 2
wash_water_pressure_level=2
# drying
drying_pressure_level=2
drying_temp_level=2
# light
light_threshold=500
light_rgb=4452563 # use 3bytes to store this value: R G B
# voice
volume=45 # range from 0 to 100
演示效果:
xiaomo:/tmp# ./test
version=1
fan_temp_level=2
fan_pre_heat=1
wash_water_temp_level=2
wash_water_pressure_level=2
drying_pressure_level=2
drying_temp_level=2
light_threshold=500
light_rgb=4452563
volume=45
纯c读写ini配置文件
用c/c++读写ini配置文件有不少第三方的开源库,如iniparser、libini、rwini、UltraLightINIParser等,但都不理想,往往代码较大、功能较弱、
接口使用不方便。尤其在大小写处理、前后空格、各种注释、跨平台换行符支持、带引号字符串处理、无section操作、原格式保持等方面存在问题。
现将本人精心制作的ini读写程序源码奉献给大家,纯c编写,简洁好用。支持windows和linux。
主要特点:
1、支持;和#注释符号,支持行尾注释。
2、支持带引号'或"成对匹配的字符串,提取时自动去引号。引号中可带其它引号或;#注释符。
3、支持无section或空section(名称为空)。
4、支持10、16、8进制数,0x开头为16进制数,0开头为8进制。
5、支持section、key或=号前后带空格。
6、支持\n、\r、\r\n或\n\r换行格式。
7、不区分section、key大小写,但写入时以新串为准,并保持其大小写。
8、新增数据时,若section存在则在该节最后一个有效数据后添加,否则在文件尾部添加。
9、支持指定key所在整行删除,即删除该键值,包括注释。
10、可自动跳过格式错误行,修改时仍然保留。
11、修改时保留原注释:包括整行注释、行尾注释(包括前面空格)。
12、修改时保留原空行。以上三点主要是尽量保留原格式。
不足之处:
1、不支持单key多value(逗号分割),只能一次性提取后自行处理。
2、不支持同名重复section和key。(重复section可视为错误,重复key则可能造成分歧)
3、不能提取所有section或key名称。
使用只需两个文件inirw.h、inirw.c,另有测试程序和工程文件,支持windows和linux。
在Windows下可以用GetPrivateProfileString或GetPrivateProfileInt方便读取.ini配置文件内容,但是在Linux平台上就一筹莫展了。为了解决该问题,打算用C来读取.ini,即可不受平台的限制了。
#define CONF_FILE_
浏览器打开
看的你配置文件是什么类型了,如果是xml文件的话,可以用TinyXML解析器去解析,看这里:http://www.cnblogs.com/phinecos/archive/2008/03/11/1100912.html
浏览器打开
目录c语言——配置文件读写代码头文件主文件工具类判断当前行是否有效获得文件有效行数加载配置文件解析配置文件获得指定配置信息释放配置文件信息总的代码
c语言——配置文件读写
配置文件读写
文件的读取与关闭
在c++中调用c语言函数
二级指针作函数参数
三级指针作函数参数
二级指针赋值给三级指针
结构体二级指针
ConfigFile.h
#define _CRT_SECURE_NO_WARNINGS
//防止头文件重复包含
#pragma once
#include<stdio.h&g
浏览器打开
分享一个linux下的C程序读取配置文件的方法当你的配置文件是形如 key1=value1 # 这是注释 key2=value2 类型的文件时,真的是非常非常简单,非常快捷。假设你的配置文件名为/path/to/file/myconf你的C程序为/path/to/file/myprog那么编写一个sh脚本,脚本内容为 . /path/to/file/myc
浏览器打开