纯C语言INI文件解析

这篇博客介绍了作者在跨平台项目中使用纯C语言编写的INI文件解析库,能够解析INI格式的字符串和文件,并能将内容保存回文件。文章提供了头文件和源文件的示例,适合需要进行配置文件处理的开发者参考。
摘要由CSDN通过智能技术生成

分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow

也欢迎大家转载本篇文章。分享知识,造福人民,实现我们中华民族伟大复兴!

               

    在一个跨平台( Android 、Windows、Linux )项目中配置文件用 INI 格式,自己写了个解析库,纯C语言的,简单好用。

    可以解析 INI 格式的字符串、解析文件、保存到文件。

    下面是头文件:

#ifndef INI_PARSER_H#define INI_PARSER_H#ifdef __cplusplusextern "C" {
   #endifstruct tag_value_list;struct ini_parser {
        struct tag_value_list * keyvalues;    int (*parse_file)(struct ini_parser *, const char * file);    int (*parse_string)(struct ini_parser *, const char *text);    char * (*value)(struct ini_parser *, const char * key);    void (*set_value)(struct ini_parser *, const char * key, const char * value);    void (*remove)(struct ini_parser *, const char *key);    int (*save_to_file)(struct ini_parser *, const char * file);};struct ini_parser * new_ini_parser();void delete_ini_parser(struct ini_parser *);#ifdef __cplusplus}#endif#endif // INI_PARSER_H

    下面是源文件:

#include "ini_parser.h"#include <stdio.h>#include <string.h>#include "tag_value.h"static struct tag_value_pair * parse_line(char *line, int len){    struct tag_value_pair * pair = 0;    int count = 0;    char * p = line;    char * end = 0
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
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。
C语言可以通过使用文件操作函数来读写INI文件INI文件是一种以文本形式存储配置信息的文件,包含一系列的节和键值对。下面是一个简单的示例: 首先,我们需要创建一个INI文件,并写入一些配置信息。 #include <stdio.h> int main() { // 打开INI文件 FILE *file = fopen("config.ini", "w"); if (file == NULL) { printf("无法打开INI文件。\n"); return 1; } // 写入配置信息 fprintf(file, "[System]\n"); fprintf(file, "Version=1.0\n"); fprintf(file, "Author=John Doe\n\n"); fprintf(file, "[Database]\n"); fprintf(file, "Host=localhost\n"); fprintf(file, "Port=3306\n"); fprintf(file, "Username=root\n"); fprintf(file, "Password=123456\n"); // 关闭INI文件 fclose(file); return 0; } 上述代码通过fopen函数创建一个名为config.iniINI文件,并使用fprintf函数写入了一些配置信息,每个节和键值对都以特定的格式写入。写入完成后,可以使用fclose函数关闭文件。 接下来,我们可以通过打开已有的INI文件来读取其中的配置信息。 #include <stdio.h> #include <stdlib.h> int main() { // 打开INI文件 FILE *file = fopen("config.ini", "r"); if (file == NULL) { printf("无法打开INI文件。\n"); return 1; } char line[100]; char section[100]; char key[100]; char value[100]; // 逐行读取INI文件 while (fgets(line, sizeof(line), file) != NULL) { // 解析节 if (line[0] == '[' && line[strlen(line) - 2] == ']') { strncpy(section, line + 1, strlen(line) - 3); section[strlen(line) - 3] = '\0'; } // 解析键和值 else if (sscanf(line, "%[^=]=%[^\n]", key, value) == 2) { printf("节: %s, 键: %s, 值: %s\n", section, key, value); } } // 关闭INI文件 fclose(file); return 0; } 上述代码通过fopen函数打开了名为config.iniINI文件,并使用fgets函数以行为单位读取文件内容。然后,代码解析了每一行的内容,并将解析的结果输出。 这只是一个简单的示例,实际的INI文件读写可能会更加复杂。C语言提供了多种文件操作函数,可以进行更高级的INI文件读写操作。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值