纯c读写ini配置文件

taoyuanmin 2015-10-14 11:48:40
纯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。

下载地址:
http://download.csdn.net/detail/taoyuanmin/9179573
...全文
2848 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
Amu@123 2019-11-09
  • 打赏
  • 举报
回复
双目追随者 2019-07-30
  • 打赏
  • 举报
回复
测出一个BUG,文件后缀名大于3位以上,会被截取前三位,如:.rgb32 只能给出.rgb
韩明君 2017-04-27
  • 打赏
  • 举报
回复
膜拜大神 多谢分享
jiqiang01234 2015-10-14
  • 打赏
  • 举报
回复
似乎glib的GKeyFile支持ini的读写
paschen 2015-10-14
  • 打赏
  • 举报
回复
谢谢LZ分享!
赵4老师 2015-10-14
  • 打赏
  • 举报
回复
支持楼主的共享精神!
taoyuanmin 2015-10-14
  • 打赏
  • 举报
回复
引用 4 楼 ID870177103 的回复:
给个不才的建议 如果你不管理内存的话就每次读写打开文件读写完关闭文件,像getprofilestring那样,支持对多个ini读写 否则用树等结构将数据保存在内存中,最有效率的办法
首先谢谢你的建议! 我很关心使用的便捷,故设计成一次装入文件到内存然后可以多次读取键值,没必要每次读取都带入相同文件名,毕竟读多个ini文件的情况不多。 如果希望带文件名以方便对多个ini的读写,完全可以自行封装,把装入文件和读取键值两个函数合成为一个就行了,最好再调一次函数释放空间。
ID870177103 2015-10-14
  • 打赏
  • 举报
回复
给个不才的建议 如果你不管理内存的话就每次读写打开文件读写完关闭文件,像getprofilestring那样,支持对多个ini读写 否则用树等结构将数据保存在内存中,最有效率的办法

70,037

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧