文档章节

笔记:将test.ini格式的文件转换成test.xml格式的文件

小强零号
 小强零号
发布于 2014/03/27 23:53
字数 281
阅读 81
收藏 1
#include <stdio.h>
#include <errno.h>
#include <stdlib.h>
#include <string.h>

#define NOTHING 0
#define LABEL 1

void delblank(char * str);

int main(int argc, char *argv[])
{
	char ch, temp[50], * chp;
	FILE * dest, * src;
	int flag = NOTHING;
	char label[10];
	char sublabel[10];
	if(argc!=3)
	{
		printf("Usage: transcate Dest_path Src_path\n");
		exit(EXIT_FAILURE);
	}
	if((src = fopen(argv[2], "r"))==NULL)
	{
		perror("Open src file : ");
		exit(EXIT_FAILURE);
	}
	if((dest = fopen(argv[1], "w"))==NULL)
	{
		perror("Open dest file : ");
		exit(EXIT_FAILURE);
	}

	while(fgets(temp, sizeof(temp)-1, src))
	{
		if(temp[0]==';')
		{
			temp[strlen(temp)-1] = '\0';
			fprintf(dest, "<!-- %s -->\n", temp+1);
		}
		else if(!strcmp(temp,"\n") && flag==LABEL)
		{
		        delblank(temp);
		        fprintf(dest, "</%s>\n\n", label);
		        flag = NOTHING;
		}
		else if(temp[0]=='[' && temp[strlen(temp)-2]==']')
		{
			flag = LABEL;
			delblank(temp);
			temp[strlen(temp)-2] = '\0';
			strcpy(label, temp+1);
			fprintf(dest, "<%s>\n",temp+1);
		}
		else if(chp=strchr(temp, '='))
		{
		        delblank(temp);
			temp[strlen(temp)-1] = '\0';
			strncpy(sublabel, temp, chp-temp);
			sublabel[chp-temp] = '\0';
			fprintf(dest, "\t<%s>%s</%s>\n", sublabel, chp+1, sublabel);
		}
	}
	if(flag==LABEL)
		fprintf(dest, "</%s>\n", label);
	fclose(dest);
	fclose(src);

	return 0;
}

void delblank(char * str)
{
	int i = 0, j = 0;
	for(; i<strlen(str); i++,j++)
	{
		if(str[i]==' ')
			i++;
		str[j] = str[i];
	}
	str[j] = '\0';
}

test.ini

;Configuration of http
[http]
domain=www.mysite.com
port=8080
cgihome=/cgi-bin

;Configuration of db
[database]
server = mysql
user = myname
password = toopendatabase


test.xml

<!-- Configuration of http -->
<http>
    <domain>www.mysite.com</domain>
    <port>8080</port>
    <cgihome>/cgi-bin</cgihome>
</http>

<!-- Configuration of db -->
<database>
    <server>mysql</server>
    <user>myname</user>
    <password>toopendatabase</password>
</database>


© 著作权归作者所有

小强零号
粉丝 6
博文 31
码字总数 12473
作品 0
长宁
程序员
私信 提问
使用nmap-converter将nmap扫描结果XML转化为XLS实战

1、前言 作为网络安全从业人员,有时候需要使用端口扫描利器nmap进行大批量端口扫描,但Nmap的输出结果为.nmap、.xml和.gnmap三种格式,还有夹杂很多不需要的信息,处理起来十分不方便,而将...

林鸿风采
2018/05/08
0
0
如何从为知笔记迁移到有道云笔记

今天是狠狠地体会到了各个云计算笔记之间的不兼容性。为知笔记很多插件很好用,但是都是支持有道云笔记和EverNote导入到为知笔记,没有从为知笔记导入到其他笔记的插件。今天一个很重要的笔记...

Ryan_snow
2018/06/26
0
0
机器学习Tensorflow笔记4:iOS通过Core ML使用Tensorflow训练模型

Tensorflow是Google推出的人工智能框架,而Core ML是苹果推出的人工智能框架,两者是有很大的区别,其中Tensorflow是包含了训练模型和评估模型,Core ML只支持在设备上评估模型,不能训练模型...

ImWiki
2018/05/16
0
0
用来记笔记的三个 Emacs 模式

借助这些 Emacs 模式轻松记录信息。 不管你从事哪种工作,你都无可避免地需要记笔记。而且可能还不是一点点。现在这年头,大家都开始以数字的形式来记笔记了。 开源软件爱好者有多种途径来以...

作者: Scott Nesbitt
04/29
0
0
PHP读写XML文件

PHP读写XML文件 author: MoreWindows blog: http://blog.csdn.net/MoreWindows KeyWord: PHP 解析XML DOMDocument XML文件操作 PHP可以方便的生成和读取XML文件。PHP主要通过DOMDocument、D......

长平狐
2012/12/10
125
0

没有更多内容

加载失败,请刷新页面

加载更多

rime设置为默认简体

转载 https://github.com/ModerRAS/ModerRAS.github.io/blob/master/_posts/2018-11-07-rime%E8%AE%BE%E7%BD%AE%E4%B8%BA%E9%BB%98%E8%AE%A4%E7%AE%80%E4%BD%93.md 写在开始 我的Arch Linux上......

zhenruyan
今天
4
0
简述TCP的流量控制与拥塞控制

1. TCP流量控制 流量控制就是让发送方的发送速率不要太快,要让接收方来的及接收。 原理是通过确认报文中窗口字段来控制发送方的发送速率,发送方的发送窗口大小不能超过接收方给出窗口大小。...

鏡花水月
今天
8
0
OSChina 周日乱弹 —— 别问,问就是没空

Osc乱弹歌单(2019)请戳(这里) 【今日歌曲】 @tom_tdhzz :#今日歌曲推荐# 分享容祖儿/彭羚的单曲《心淡》: 《心淡》- 容祖儿/彭羚 手机党少年们想听歌,请使劲儿戳(这里) @wqp0010 :周...

小小编辑
今天
887
10
golang微服务框架go-micro 入门笔记2.1 micro工具之micro api

micro api micro 功能非常强大,本文将详细阐述micro api 命令行的功能 重要的事情说3次 本文全部代码https://idea.techidea8.com/open/idea.shtml?id=6 本文全部代码https://idea.techidea8....

非正式解决方案
今天
5
0
Spring Context 你真的懂了吗

今天介绍一下大家常见的一个单词 context 应该怎么去理解,正确的理解它有助于我们学习 spring 以及计算机系统中的其他知识。 1. context 是什么 我们经常在编程中见到 context 这个单词,当...

Java知其所以然
昨天
6
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部