c 语言 解析ini文件为xml

c 读写config.ini 项目需要,今天写了个加载config.ini文件的模块和生成 阅读详情
 
/*
 解析ini文件
 */

#include <stdio.h>
#include <string.h>

int main(void) {

 FILE *fp_in, *fp_out;
 if ((fp_in = fopen("host.ini", "r")) == NULL) {
  perror("");
  return -1;
 }
 fp_out = fopen("host.xml", "w");

 char buff_in[1024];
 char buff_out[1024];
 char auto_add[50];
 int auto_flag = 0;
 int activXml = 0;

 while (fgets(buff_in, 1024, fp_in) != NULL) {

  if (buff_in[0] == 10) {
   if (auto_flag) {
    fputs(auto_add, fp_out);
    memset(auto_add, '\0', 50);
   }
   auto_flag = 0;
   activXml = 0;
  } else if (buff_in[0] == ';') //;Configuration of http
  {
   if (auto_flag) {
    fputs(auto_add, fp_out);
    memset(auto_add, '\0', 50);
   }
   strcpy(buff_out, "<!-- ");
   strncat(buff_out, buff_in + 1, strlen(buff_in) - 2);
   strcat(buff_out, " -->\n");
   auto_flag = 0;
   activXml = 1;

  } else if (buff_in[0] == '[') //[http] --> <http>
  {
   strcpy(buff_out, "<");
   strncat(buff_out, buff_in + 1, strlen(buff_in) - 3);
   strcat(buff_out, ">\n");
   auto_add[0] = '<';
   auto_add[1] = '/';
   strcpy(auto_add + 2, buff_out + 1); //</http>
   auto_flag = 0;
   activXml = 1;

  } else if (buff_in[0] != ' ') {
   char *p = buff_in;
   char *q = buff_out;
   strncpy(buff_out + 1, buff_in, strlen(buff_in) - 1);
   buff_out[0] = '<';
   while (*p != '=') //domain=www.mysite.com
   {
    p++;
    q++;
   }
   *(q + 1) = '>';
   char end[50];
   p = end + 2;
   q = buff_out + 1;
   end[0] = '<';
   end[1] = '/';
   while (*q != '>') {
    *p++ = *q++;
   }
   *p = '>';
   strcat(p, "\n");
   strcat(buff_out + strlen(buff_out), end);
   memset(end, '\0', 50);
   auto_flag = 1;
   activXml = 1;
  }

  if (activXml) {
   fputs(buff_out, fp_out);
  }
  memset(buff_out, '\0', 1024); //清空缓冲区
 }
 fclose(fp_in);
 fclose(fp_out);

 return 0;
}

 


 

C 语言 读取XML文件 一个很经典的算法,采用盲找法,快速的解析XML文件,执行效率很高,XML信息读取只需要从头到尾分析一边,然后将所找到的信息分别存储。 立即下载

相关推荐

纯C语言解析XML字符串含实例

王柱石wzs 纯C语言解析xml字符串,有实例,保证可用,含makefile xmlparse.c xmlparse.h testxml.c 目录:/export/home/chcard/testxml 日志:/export/home/chcard/log testxml.c 是一个测试用例,包含了常用的方法,并有注解 在使用时请保留作者名称 编译测试用例方法:gcc -o testxml testxml.c libxmlparse.a 运行时可输入:testxml 可在/export/home/chcard/log中的.log文件中看到输出的XML内容 路径以实际应用为准

c语言解析xml文档

DOM= Document Object Model,文档对象模型,DOM可以以一种独立于平台和语言的方式访问和修改一个文档的内容和结构。换句话说,这是表示和处理一个HTML或XML文档的常用方法。有一点很重要,DOM的设计是以对象管理组织(OMG)的规约为基础的,因此可以用于任何编程语言。         Dom技术使得用户页面可以动态地变化,如可以动态地显示或隐藏一个元素,改变它们的属性,增

程序狗的成长之路 9570

纯C语言解析xml字符串

纯C语言解析xml字符串,有实例,保证可用,含makefile xmlparse.c xmlparse.h testxml.c 目录:/export/home/chcard/testxml 日志:/export/home/chcard/log testxml.c 是一个测试用例,包含了常用的方法,并有注解 在使用时请保留作者名称 编译测试用例方法:gcc -o testxml testxml.c libxmlparse.a 运行时可输入:testxml 可在/export/home/chcard/log中的.log文件中看到输出的XML内容 路径以实际应用为准

用C写的XML解析器,良好的中文支持

前段时间用C写了一个XML解析器,过两天要重写成C++版的,现在发上来给大家看看,大家给批评一下,如果要完整的工程源码可以到http://www.9731.org/myfile/TXml-1.0.0-1.rar下载TXml已经不提供了,已经升级为新版的ChaMoRo 解析器了! 

妖嘎冻未条 4427

C语言解析xml,报文

20120725094158 => ******** xTree 结构, 总节点数=10, 节点空间=12 ******** 20120725094158 => 节点号 父节点 节点级 子节数 节点名节点数据 20120725094158 => 0-105 [ROOT][] 20120725094158 => 1010 [QueryDate][20120603] 20120725094158 => 2012 [CYC][] 20120725094158 => 3220 [a1][tt] 20120725094158 => 4 2 2 0 [b1] [dd] 20120725094158 => 5 0 1 2 [CYC] [] 20120725094158 => 6 5 2 0 [a1] [er] 20120725094158 => 7 5 2 0 [b1] [san] 20120725094158 => 8 0 1 0 [CheckFlag] [2] 20120725094158 => 9 0 1 0 [FilePath] [CheckAcct] 20120725094158 =>***************************************************************** 20120725094158 =>===================== 20120725094158 =><?xml version="1.0" encoding="UTF-8"?> 20120725094158 =><?xml version="1.0" encoding="UTF-8"?>12345 20120725094158 =>===申请节点存储空间=4 20120725094158 => 节点数=2 20120725094158 => ******** xTree 结构, 总节点数=2, 节点空间=4 ******** 20120725094158 => 节点号 父节点 节点级 子节数 节点名 节点数据 20120725094158 => 0 -1 0 1 [ROOT] [] 20120725094158 => 1 0 1 0 [Flag] [12345] 20120725094158 =>*****************************************************************

fp_in_op.zip

博客 C#中面向对象编程中的函数式编程 中的演示demo

解析XML文件C实现(垃圾代码)

如标题小括号所示,这是一个垃圾代码,但是还是实现了一部分内容,练习使用,仅供参考。使用编译器生成可执行文件。

qq_32287935的博客 611

c语言解析XML文件

本指南中的例子代码示范主要做到: • 解析文档 • 取得指定元素的文本 • 添加一个元素及它的内容 • 添加一个属性 • 取得一个属性的值

【程序练习】——ini格式转换为xml格式

;Configuration of http [http] doamin=www.mysite.com port=8080 cgihome=/cgi-bin   ;Configuration of db [database] server = mysql user = myname password = toopendatabase 转换为: 1 &lt;!-...

weixin_34174422的博客 268

银河麒麟(桌面版/服务器版)远程桌面配置全攻略:XRDP与VNC实战指南

本文提供了银河麒麟操作系统(桌面版与服务器版)配置远程桌面的完整实战指南。详细对比并演示了XRDP与VNC两种主流方案的安装、配置与连接步骤,涵盖从环境准备、软件安装、服务启动到客户端连接的全过程,并针对常见的黑屏、连接失败等问题给出了有效的排坑解决方案,帮助用户实现跨平台的便捷图形化远程管理。

b0c1d2的博客 809

【超简单】一文入门在Ubuntu系统使用GitHub

Github是基于git的代码仓库,对于开发项目的科研者或者工程师,代码仓库都是不可多得的版本控制与多端编程工具,今天这篇文章带你轻松Github入门,简单的项目本文的操作足矣。

a13337649640的博客 5236

实现一个简单的INI配置文件解析器

INI配置文件解析器实现摘要 📝 本文介绍了一个轻量级INI配置文件解析器的实现方案。INI格式由节(section)、键(key)和值(value)组成,广泛应用于软件配置。解析器核心功能包括: 核心结构:采用字典嵌套存储配置数据,顶层为节名,下层为键值对 解析流程: 逐行处理文件内容 跳过注释和空行 识别节声明([section]) 提取键值对(key=value) 扩展功能:支持类型转换、默认值设置和配置保存 代码实现:提供Python示例代码,包含解析、读取和保存功能 该解析器可简化配置管理,处理

always_TT的博客 437

VMware 17+Win10 22H2全栈配置指南|UEFI优化+GPU直通实战

​VMware下载:下载官网版本的Wmare 17 Pro (点击直达链接 )企业用户可选永久许可证,个人学习也可以直接安装使用,Win10镜像:微软官网下载22H2版ISO文件(附官方纯净版渠道 )

waicsdn_haha的博客 4019

libxml2 获取每个节点的值

#include &lt;stdlib.h&gt; #include &lt;stdio.h&gt; #include &lt;string.h&gt; #include &lt;libxml2/libxml/xmlmemory.h&gt; #include &lt;libxml2/libxml/parser.h&gt; static char nodesXml[30][30] =...

东湖畔 634

MIMIC-IV数据库中患者院内死亡的单因素生存分析

目的 由易到难,对mimic-iv的查询进行实际操作,体现先前文章中提到的mimic-iv数据查询的规律。 数据分析计划 死亡,是重症患者最重要的结局指标,在MIMIC数据库中收录了院内死亡的数据,以及进出ICU的时间(和进出医院的时间),所以我们可以获得是否死亡,以及从入ICU(或入院)到死亡发生之间的时间,有了这两个指标,我们可以通过Cox单因素(参数和非参数)模型来观察ICU(和医院)内死亡的趋势,以及某个变量(比如,性别和种族等)对死亡趋势的影响,以为后续的分析奠定基础。 数据的获取 我们需要数个变

skyskytotop的博客 3185

yolov26改进 | 融合改进篇 | 轻量级移动端网络ShuffleNetV2融合CCFM参数量仅百万(附代码+修改教程)

本文介绍ShuffleNetV2与跨尺度特征融合模块CCFM融合改进的YOLOv26。ShuffleNetV2以硬件效率为导向,通过通道分割、轻量卷积和Channel Shuffle减少冗余计算与内存访问,在降低参数量和GFLOPs的同时保持高效特征提取;CCFM进一步加强不同尺度特征交互,弥补轻量主干语义表达不足的问题。本人在轻量模型上测试后,参数量和计算量明显下降,检测精度有一定提升,适合移动端、边缘设备及实时检测任务。文中提供完整代码、配置文件、模块注册及Codex修改思路,方便复现、对比和二次创新。

Snu77的博客 197

.ini文件转换为.xml文件

config.ini文件#config of network 有关网络的配置信息 !network ip=192.168.11.6 port=8000 home-path=/home/admin/ #config of database 有关数据库的配置信息 !database server=oracle user=admin password=123456 config.xml文

qisefengzheng的专栏 总有一天你将破蛹而出 1212

29、几何形态测量学在蝴蝶翅膀研究中的应用

本博客介绍了几何形态测量学在花斑木蛱蝶(Pararge aegeria)翅膀研究中的应用,探讨了环境因素对蝴蝶翅膀大小和形状的影响。通过选择合适的地标并采用Procrustes分析方法,研究揭示了不同景观类型下翅膀形状的差异及其潜在的适应性意义。文章还讨论了发育可塑性在飞行形态变异中的作用,并比较了几何形态测量学与其他传统方法的优势。最后提出了未来研究方向,包括多因素综合分析、发育机制探索及长期生态监测,为理解蝴蝶的适应性进化提供了重要线索。

ff678的博客 107

minIni - a minimal INI file parser

minIni-最小的INI文件解析器 minIni是一个程序员的库,用于在嵌入式系统中读取和写入“ INI”文件。minIni占用很少的资源,具有确定的内存占用空间,并且可以针对各种文件I / O库进行配置。minIni提供了用于从INI文件中读取,写入和删除密钥的功能,全部功能都用830行C语言的(注释)源代码(1.2版)(该代码也用C++编译,并带有包装器类)。 minIni的主要用途是在运行RTOS(甚至没有任何操作系统)的嵌入式系统上使用。minIni要求这样的系统提供一种存储和文件I...

hefangchi的专栏 2404

YOLO11改进 | 注意力机制 | 添加SimAM注意力机制【全网独家+附完整代码】

yolo11,yolo11改进,yolo11创新,yolo11添加注意力机制

kay_545 1229

YOLOv11改进策略【模型轻量化】| 替换骨干网络为 MobileViTv1高效的信息编码与融合模块,获取局部和全局信息

本文记录的是基于MobileNet V4的YOLOv11目标检测轻量化改进方法研究。其中MobileViT块旨在以较少的参数对输入张量中的进行建模,结合卷积与 Transformer 的优势,并实现有效的信息编码与融合本文配置了原论文中和三种模型,以满足不同的需求。

Limiiiing的博客 1074

C语言开源库iniparser解析ini文件

使用 iniparser 库的应用程序可以很方便地读取和解析INI文件中的配置信息,大大简化了对配置文件的处理工作,降低了程序的开发复杂度。由于其开源属性,开发者可以根据自己的需求自由使用、研究和改进该库。

new9232的博客 4103

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

JSON,XML,INI配置文件的区别与使用

正常的应用程序在启动时通常需要从配置文件中恢复配置数据。这些配置文件的格式有很多种,如INIXMLJSON等。在本文中,我们将重点介绍,它是一种轻量级的数据交换格式。

carolinas的博客 2178

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

一文告诉你Linux下如何用C语言实现ini配置文件的解析和保存

INI(InitializationFile)文件是一种简单直观的数据存储格式,常用于配置应用程序的初始化设置。这种文件通常包含若干个节(section)和键值对(key-valuepairs)。INI文件的每一部分都是自描述性的,易于阅读和编辑,使得非程序员也能轻易理解并修改配置参数。INI文件因其简单易用性而在许多编程语言中广泛应用,尤其是在Windows操作系统中,很多应用程序都采用INI文件作为配置文件。

一口Linux的专栏 1392

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

上一篇: 检测子进程的结束返回状态
下一篇: vfork为什么会出现死循环
MrBugYang
博客等级 码龄18年 21粉丝 35原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值