C语言 读取配置文件
配置文件截图:

读取结果截图:

代码转自:http://www.tuicool.com/articles/Zb2iIn
附代码:
// ReadConfig.cpp : 定义控制台应用程序的入口点。
//
//#include "stdafx.h"
#include <stdio.h>
#include <stdlib.h>
#include <string.h> struct configItem
{
char key[];
char value[];
}; configItem configList[] = {
{"ip", },
{"port", },
{"line", }
}; /*
* 这个函数是对给定的一个字符串寻找以等号分开的键值对
* src -- 源字符串
* key -- 键
* value -- 值
*/
int strkv(char *src, char *key, char *value)
{
char *p, *q;
int len;
p = strchr(src, '=');//p找到等号
q = strchr(src, '\n');//q找到换行 //如果有等号有换行
if (p != NULL && q != NULL)
{
*q = '\0'; //将换行设置为字符串结尾
strncpy(key, src, p-src); //将等号前的内容拷入key中
strcpy(value, p+); //将等号后的内容拷入value中,跳过等号所以p需要加1
return ;
}
return ;
} /*
* 读取配置函数
*
*/
void Config(char * configFilePath, struct configItem* configVar, int configNum)
{
int i;
FILE * pfile;
char buf[] = ""; //缓冲字符串
char key[] = ""; //配置变量名
char value[] = ""; //配置变量值 //打开配置文件
pfile = fopen(configFilePath, "r"); if (pfile == NULL)
{
printf("配置文件打开失败!\n");
exit(-);
} //依次读取文件的每一行
while (fgets(buf, , pfile))
{
//读取键值对
if (strkv(buf, key, value))
{
//读取成功则循环匹配数组
for (i = ; i < configNum; i++)
{
//名称相等则匹配成功,拷贝value值
if (strcmp(key, configVar[i].key) == )
{
strcpy(configVar[i].value, value);
}
}
//key字符串在strkv函数内部没有给结束符'\0',需要这里重置一下
//value在strkv中已经给了结束符'\0'
memset(key, , strlen(key));
} }
fclose(pfile);
} void main()
{
int i;
//读取配置文件
Config("C:\\config.txt",
configList,
sizeof(configList)/sizeof(struct configItem)
); for (i = ; i < sizeof(configList)/sizeof(struct configItem); i++)
{
printf("%s=%s \n", configList[i].key, configList[i].value);
}
system("pause");
}
(完)
C语言 读取配置文件的更多相关文章
- C语言读取配置文件
自从大学学完C之后,就再也没用过它了, 在网上找代码,七拼八凑之后,终于成形~~勉强能用,不喜勿喷,^_^! int GetValue(const wchar_t *key, wchar_t *val ...
- Go语言读取各种配置文件
配置文件结构体 config.go package config type System struct { Mode string `mapstructure:"mode" jso ...
- Windows 服务多语言化时读取配置文件失败的问题。
在Installer中,按一般读取配置文件的方法(ConfigurationManager.AppSettings["CultureName"])读取不到内容. 可以这样读取: v ...
- Python语言的configparser模块便捷的读取配置文件内容
配置文件是在写脚本过程中经常会用到的,所以读取配置文件的模块configparser也非常重要,但是很简单. 首先我们的配置文件内容为: 这样的配置文件,[]里面的内容叫section,[]下面的内容 ...
- 利用java反射机制 读取配置文件 实现动态类载入以及动态类型转换
作者:54dabang 在spring的学习过程之中,我们能够看出通过配置文件来动态管理bean对象的优点(松耦合 能够让零散部分组成一个总体,而这些总体并不在意之间彼此的细节,从而达到了真正的物理上 ...
- 依据不同的操作系统读取配置文件/java读取属性文件代码
package cn.com.css.common.util; /** * @brief OSEnum.java 操作系统的枚举 * @attention * @author 涂作权 * @d ...
- java中读取配置文件ResourceBundle和Properties两种方式比较
今天在开发的时候,需要把一些信息放到配置文件中,方便后续的修改,注意到用的是ResourceBundle读取配置文件的方式,记得之前也见过使用Properties的方式,就比较好奇这两种方式的区别,网 ...
- ResourceBundle与Properties读取配置文件
ResourceBundle与Properties的区别在于ResourceBundle通常是用于国际化的属性配置文件读取,Properties则是一般的属性配置文件读取. ResourceBundl ...
- ResourceBundle和properties 读取配置文件区别
java.util.ResourceBundle 和java.util.properties 读取配置文件区别 这两个类都是读取properties格式的文件的,而Properties同时还能用来写文 ...
随机推荐
- Java同步数据结构之Map概述及ConcurrentSkipListMap原理
引言 前面介绍了CopyOnWriteArraySet,本来接着是打算介绍ConcurrentSkipListSet,无耐ConcurrentSkipListSet的内部实现其实是依赖一个Concur ...
- Servlet的入门案例
编写入门案例 1)编写java类,继承HttpServlet类 2)重新doGet和doPost方法 3)Servlet程序交给tomcat服务器运行!! 3.1 servlet程序的class码拷贝 ...
- C# json提取多层嵌套到数组-- C# json 数组
json比一般格式再复杂点的就像数组一样,有多层嵌套,研究了一下,记录代码如下: string jsonText = "{'name':'test','phone':'18888888888 ...
- 【leetcode_easy】541. Reverse String II
problem 541. Reverse String II 题意: 给定一个字符串,每隔k个字符翻转这k个字符,剩余的小于k个则全部翻转,否则还是只翻转剩余的前k个字符. solution1: cl ...
- 配置Xmanager远程登录
1.修改/etc/gdm/custom.conf文件找到下面的语句:[security]AllowRemoteRoot=true[xdmcp]Enable=true修改custom.conf后,必须重 ...
- QFramework 使用指南 2020(八):Res Kit(2)模拟模式与非模拟模式
在上一篇,介绍了 Res Kit 的基本使用,相信大家已经体会到了 Res Kit 的简便之处了. 在这一篇,我们试着探讨一下 Res Kit 的设计背后原理. AssetBundle 的不便之处 在 ...
- 最新 华云数据java校招面经 (含整理过的面试题大全)
从6月到10月,经过4个月努力和坚持,自己有幸拿到了网易雷火.京东.去哪儿.华云数据等10家互联网公司的校招Offer,因为某些自身原因最终选择了华云数据.6.7月主要是做系统复习.项目复盘.Leet ...
- POJ 1734:Sightseeing trip
Sightseeing trip Time Limit: 1000MS Memory Limit: 65536K Total Submissions: Accepted: Special Judge ...
- HDU 6470 【矩阵快速幂】
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6470 写这道题是为了让自己不要忘记矩阵快速幂如何推出矩阵式子的. 注意 代码是TLE的!! #incl ...
- hdoj3586 (树形dp)
题目链接:https://vjudge.net/problem/HDU-3586 题意:一棵边权树,要删掉一些边使得每个叶子结点不能到达树根,且这些边的权值<=上限Max,且边权和小于m,求最小 ...