Advertisement

纯C语言进行ini配置文件的读写。

  •  5星
  •     浏览量: 0
  •     大小:None
  •      文件类型:None


简介:
纯C语言读取INI配置文件,借助C/C++的第三方开源库,例如iniparser、libini、rwini和UltraLightINIParser等,曾尝试过多种解决方案。然而,这些库往往存在代码量较大、功能相对有限以及接口使用不便等问题。尤其是在处理大小写敏感性、前后空格、各种注释符号、跨平台换行符兼容性、带引号字符串的处理以及无section操作等方面,均存在明显的不足。为了解决这些挑战,现向大家奉献本人精心开发的INI读写程序源码,该程序采用纯C语言编写,设计简洁高效。它同时支持Windows和Linux操作系统。其主要特点包括:首先,能够识别并支持“;”和“#”两种注释符号,并允许在行尾添加注释;其次,能够正确处理带有引号或成对匹配的字符串,在提取时自动去除引号的限制。此外,该程序也支持无section或空section(即section名称为空)的情况;同时具备处理10进制、16进制和8进制数值的能力,并能识别以“0x”开头的16进制数和以“0”开头的8进制数;此外还支持section、key或等号前后存在空格的情况,以及\n、\r、\r\n或\n\r等多种换行格式。更重要的是,该程序在处理数据时不区分section和key的大小写差异,但在写入时则会遵循新的字符串大小写规则并保持一致性;当新增数据时,如果section已存在,则会在该节最后一个有效数据之后添加新的数据;否则,会将新的数据添加到文件的末尾。此外还提供了指定key所在整行删除的功能(即删除键值及其对应的注释);并且能够自动忽略格式错误的行并进行修改时保留原有格式。最后还保留了原有的注释信息:包括整行注释以及行尾注释(包含前导空格),并保留了原有的空行。需要指出的是: 1. 该程序不支持单key对应多value(通过逗号分隔),需要用户自行处理提取后的数据;2. 它不支持同名重复的section和key(重复的section可能被视为错误情况),而重复的key可能会导致歧义;3. 该程序无法提取所有section或key名称。使用该程序仅需包含两个文件inirw.h和inirw.c即可实现读取和写入功能, 另附有测试程序及工程文件, 确保在Windows和Linux环境下都能顺利运行。

全部评论 (0)

还没有任何评论哟~
客服
客服
  • Cini
    优质
    本项目使用纯C语言编写,旨在实现对INI配置文件高效且便捷的读取与修改功能。适合需要在无外部库依赖情况下处理INI文件的各种应用场景。 使用纯C语言编写的读取和写入ini格式配置文件的示例代码适用于VC6编译环境,并且包含详细的注释以帮助理解。该代码封装合理,便于快速集成到其他项目中。
  • CINI
    优质
    本文章介绍了如何使用C语言编程来读取和修改INI格式的配置文件的方法与技巧,适用于需要对程序设置进行外部管理的情况。 在使用C/C++读写INI配置文件的过程中,很多第三方开源库如iniparser、libini、rwini以及UltraLightINIParser虽然提供了部分功能,但往往存在代码冗余较大、接口不够友好等问题,并且它们在处理大小写敏感性、前后空白字符和各种注释符号等方面表现不佳。因此,在这里分享一个由我精心设计的纯C编写的INI读写程序源码,旨在提供一种更为简洁实用的选择。 该库支持Windows与Linux操作系统环境下的使用需求,主要特色如下: 1. 支持`;` 和 `#` 两种注释符号,并允许行尾添加注释。 2. 能够处理带引号的字符串(包括包含其他类型的引号或特殊字符的情况),并且在提取时自动去除双引号。 3. 允许存在无名称或者空名的section定义。 4. 支持十进制、十六进制和八进制数值表示,其中以`0x`开头为十六进制数,以单个零(0)开头则视为八进制数字。 5. section标题或键值对中的等号前后可以包含空格字符而不影响解析结果。 6. 具备跨平台换行符兼容性(例如`\n`, `\r\n` 或者其他组合形式的换行方式)。 7. 在读取和写入时忽略大小写的差异,但在新键值对添加或修改操作中保留用户提供的原始字符串格式。 8. 当向文件中新添数据时,默认行为是在已有section内最后一个有效条目的后面追加;如果不存在对应的section,则直接在文档结尾处创建新的部分并插入信息。 9. 提供了删除特定key及其相关联的所有注释的功能,实现精确的数据项移除操作。 10. 在解析过程中能够自动忽略格式错误的行,并保持这些无效数据原样不变以便于后续调试或修正工作。 11. 对已存在的键值对进行修改时保留原有的备注信息(包括整行形式和位于末尾位置处的小注释)及空白间隔字符,从而尽量维持文件的整体布局风格一致性。 不足之处在于: - 不支持单个key对应多个value的列表格式; - 禁止定义重复名称的section或键值对; 使用该库时仅需引入两个核心头文件`inirw.h`和实现代码段`inirw.c`, 并附带有帮助测试功能正确性的示例程序及项目配置文件。
  • C/C++版本INI
    优质
    本项目提供了一个用C/C++编写的INI文件读写工具库,方便用户轻松管理和操作INI格式的配置文件。 本工具的功能是读取ini配置文件中的配置项,并包含样例程序及编译脚本。如需自编译验证,在安装有G++4.4.7以上版本的Linux环境下,直接运行makefile(命令为make),即可生成可执行文件parse并运行样例。若要将此工具嵌入项目中使用,只需将config.cpp与config.h文件拷贝至项目的源程序目录下,并在代码中加入config.h头文件,参考样例iniFile_parse.cpp中的写法,采用int parse_ini_file(const char *fileName, Config *pconfig)接口解析配置文件到Config类对象中。关于Config类的主要功能,请参阅说明的第三部分。
  • C# INI帮助类
    优质
    本简介提供了一个用于C#编程语言的INI配置文件读写帮助类。此工具简化了对INI格式数据的操作,便于开发者快速实现配置信息的存取功能。 读写配置文件帮助类,系统自用。需要的伙伴可以拿走。
  • C/C++ INI源代码
    优质
    本项目提供了一套完整的C/C++实现的INI配置文件读写工具源代码,便于开发者在项目中灵活操作和管理INI格式的配置信息。 一份便于读写的INI文件的C和C++源代码,适用于各种编译环境,纯C/C++编写。
  • C++处理INI操作
    优质
    本篇文章详细介绍了如何使用C++编程语言进行INI配置文件的读取和写入操作,适合需要对INI文件进行自动化管理的开发者阅读。 在原作者的基础上进行修改的,请自行下载或再次修改即可。
  • LabVIEWINI
    优质
    本教程介绍如何使用LabVIEW编程环境读取和编写配置文件及INI文件,涵盖基本操作与应用示例,帮助用户掌握数据管理技能。 LabVIEW读写配置文件或INI文件可以通过使用相关的VI(虚拟仪器)来实现。这些操作通常涉及到解析文本数据、处理字符串以及可能的错误处理机制。用户可以利用LabVIEW内置的功能,或者通过编写自定义代码来完成这一任务。此外,在线社区和文档中提供了丰富的资源和技术支持,帮助开发者更有效地进行此类编程工作。
  • MFC操作INI
    优质
    本教程详细介绍了如何使用Microsoft Foundation Classes (MFC)库进行Windows INI文件的操作,包括高效的读取和写入方法,帮助开发者轻松管理应用程序设置。 这是一个使用MFC函数GetPrivateProfileString()来读写.ini文件的演示程序。该程序包含代码和运行在VC6.0环境下的工程示例以及参考资料和DOC说明文档。
  • C# 如何取和INI
    优质
    本教程详细介绍在C#中如何实现读取和写入INI配置文件的功能,帮助开发者轻松管理应用程序设置。 读取和写入INI配置文件: ```csharp string readStr = _file.ReadString(CONFIG, AAA, NONE); _file.WriteString(CONFIG, BBB, NONE); _file.DeleteKey(CONFIG, CCC); ```
  • Linux下INI
    优质
    本项目提供在Linux环境下操作INI配置文件的便捷工具库,支持高效读取与修改INI文件中的各类设置项,适用于需要灵活管理配置参数的应用场景。 在开发Linux程序过程中经常需要处理配置文件的读写操作。最近我在这个方面遇到了一些挑战,并最终总结了一些经验分享给有需求的朋友。 ### Linux 下 INI 配置文件读写的库 对于INI格式配置文件的操作,可以使用特定的C/C++库来简化代码实现。 ```cmake if(false) SET(CMAKE_SYSTEM_NAME Linux) set(CMAKE_C_COMPILER /home/swapp/arm/5.4.0/bin/arm-linux-gcc) set(CMAKE_CXX_COMPILER /home/swapp/arm/5.4.0/bin/arm-linux-g++) else() SET(CMAKE_SYSTEM_NAME Linux) set(CMAKE_C_COMPILER /usr/bin/gcc) set(CMAKE_CXX_COMPILER /usr/bin/g++) endif() ``` ### 编译说明 **编译Linux程序:** 1. 修改 `CMakeLists.txt` 文件中的代码,使用 `/usr/bin/gcc` 进行编译。 2. 执行以下命令: - 创建构建目录:`mkdir linux_build` - 切换到该目录:`cd linux_build` - 使用cmake配置项目:`cmake ..` - 编译程序: `make` **编译ARM架构程序:** 1. 修改 `CMakeLists.txt` 文件中的代码,使用 ARM 架构的 GCC 编译器。例如设置为 `/home/swapp/arm/5.4.0/bin/arm-linux-gcc`。 2. 执行以下命令: - 创建构建目录:`mkdir arm_build` - 切换到该目录:`cd arm_build` - 使用cmake配置项目: `cmake ..` - 编译程序: `make` 以上是基本步骤和注意事项,希望对大家有所帮助。