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同时还能用来写文 ...
随机推荐
- FIREDAC返回多结果集
FIREDAC返回多结果集 以前使用ADO, 如果SQL返回的结果集有多个 可以通过NextRecordset来依次获取 代码移植到FireDAC, 对于多结果集处理差不多, 但是还是有一些不一样的地 ...
- Nginx 出现 403 Forbidden 最终解决方法
Nginx 出现 403 Forbidden 最终解决 步骤一: 检查目录权限.权限不足的就加个权限吧. 例子:chmod -R 755 / var/www 步骤二: 打开nginx.conf 例子: ...
- mongoose 建立schema 和model
在node中使用MongoDB很多情况下,都是使用mongoose的,所以这集来介绍一下 安装 yarn add mongoose 连接 const mongoose = require(" ...
- 安装Chrome扩展程序xpath
最近工作用到xpath,直接从浏览器复制下来路径时常会出错而且长度很长,于是我想到之前用过的一款chrome插件,可以直接编写xpath语句,并实时出现解析出的结果,检验xpath语句是否编写正确.效 ...
- <JavaScript> 关于闭包和this对象
1.this指向windows是如何得出的 var name = "The Window"; var object = { name : "My Object" ...
- realsense data
line: (43,350) (558,350) (-0.448628,-0.554531,0.995),(0,0,0) 0.713282 ------------------------------ ...
- 阶段5 3.微服务项目【学成在线】_day05 消息中间件RabbitMQ_5.RabbitMQ研究-入门程序-生产者
1)java client 生产者和消费者都属于客户端,rabbitMQ的java客户端如下: 我们先用 rabbitMQ官方提供的java client测试,目的是对RabbitMQ的交互过程有个清 ...
- <c:if test="${uns ne ‘admin’}">
类别 运算符 算术运算符 + . - . * . / (或 div )和 % (或 mod ) 关系运算符 == (或 eq ). != (或 ne ). < (或 lt ). > (或 ...
- Path环境变量的作用
作用: 当我们要求系统运行一个程序(例如a.exe)而没有告诉它程序所在的完整路径时,系统会先在当前目录寻找是否存在a.exe,如果找到,直接运行:如果没有找到,会去path路径下面找.设置path, ...
- C# volatile 摘录
C# 参考 volatile 关键字指示一个字段可以由多个同时执行的线程修改. 声明为 volatile 的字段不受编译器优化(假定由单个线程访问)的限制. 这样可以确保该字段在任何时间呈现的都是最新 ...