配置文件截图:

读取结果截图:

代码转自: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语言 读取配置文件的更多相关文章

  1. C语言读取配置文件

    自从大学学完C之后,就再也没用过它了, 在网上找代码,七拼八凑之后,终于成形~~勉强能用,不喜勿喷,^_^! int GetValue(const wchar_t *key, wchar_t *val ...

  2. Go语言读取各种配置文件

    配置文件结构体 config.go package config type System struct { Mode string `mapstructure:"mode" jso ...

  3. Windows 服务多语言化时读取配置文件失败的问题。

    在Installer中,按一般读取配置文件的方法(ConfigurationManager.AppSettings["CultureName"])读取不到内容. 可以这样读取: v ...

  4. Python语言的configparser模块便捷的读取配置文件内容

    配置文件是在写脚本过程中经常会用到的,所以读取配置文件的模块configparser也非常重要,但是很简单. 首先我们的配置文件内容为: 这样的配置文件,[]里面的内容叫section,[]下面的内容 ...

  5. 利用java反射机制 读取配置文件 实现动态类载入以及动态类型转换

    作者:54dabang 在spring的学习过程之中,我们能够看出通过配置文件来动态管理bean对象的优点(松耦合 能够让零散部分组成一个总体,而这些总体并不在意之间彼此的细节,从而达到了真正的物理上 ...

  6. 依据不同的操作系统读取配置文件/java读取属性文件代码

    package cn.com.css.common.util; /**  * @brief OSEnum.java 操作系统的枚举  * @attention  * @author 涂作权  * @d ...

  7. java中读取配置文件ResourceBundle和Properties两种方式比较

    今天在开发的时候,需要把一些信息放到配置文件中,方便后续的修改,注意到用的是ResourceBundle读取配置文件的方式,记得之前也见过使用Properties的方式,就比较好奇这两种方式的区别,网 ...

  8. ResourceBundle与Properties读取配置文件

    ResourceBundle与Properties的区别在于ResourceBundle通常是用于国际化的属性配置文件读取,Properties则是一般的属性配置文件读取. ResourceBundl ...

  9. ResourceBundle和properties 读取配置文件区别

    java.util.ResourceBundle 和java.util.properties 读取配置文件区别 这两个类都是读取properties格式的文件的,而Properties同时还能用来写文 ...

随机推荐

  1. FIREDAC返回多结果集

    FIREDAC返回多结果集 以前使用ADO, 如果SQL返回的结果集有多个 可以通过NextRecordset来依次获取 代码移植到FireDAC, 对于多结果集处理差不多, 但是还是有一些不一样的地 ...

  2. Nginx 出现 403 Forbidden 最终解决方法

    Nginx 出现 403 Forbidden 最终解决 步骤一: 检查目录权限.权限不足的就加个权限吧. 例子:chmod -R 755 / var/www 步骤二: 打开nginx.conf 例子: ...

  3. mongoose 建立schema 和model

    在node中使用MongoDB很多情况下,都是使用mongoose的,所以这集来介绍一下 安装 yarn add mongoose 连接 const mongoose = require(" ...

  4. 安装Chrome扩展程序xpath

    最近工作用到xpath,直接从浏览器复制下来路径时常会出错而且长度很长,于是我想到之前用过的一款chrome插件,可以直接编写xpath语句,并实时出现解析出的结果,检验xpath语句是否编写正确.效 ...

  5. <JavaScript> 关于闭包和this对象

    1.this指向windows是如何得出的 var name = "The Window"; var object = { name : "My Object" ...

  6. realsense data

    line: (43,350) (558,350) (-0.448628,-0.554531,0.995),(0,0,0) 0.713282 ------------------------------ ...

  7. 阶段5 3.微服务项目【学成在线】_day05 消息中间件RabbitMQ_5.RabbitMQ研究-入门程序-生产者

    1)java client 生产者和消费者都属于客户端,rabbitMQ的java客户端如下: 我们先用 rabbitMQ官方提供的java client测试,目的是对RabbitMQ的交互过程有个清 ...

  8. <c:if test="${uns ne ‘admin’}">

    类别 运算符 算术运算符 + . - . * . / (或 div )和 % (或 mod ) 关系运算符 == (或 eq ). != (或 ne ). < (或 lt ). > (或 ...

  9. Path环境变量的作用

    作用: 当我们要求系统运行一个程序(例如a.exe)而没有告诉它程序所在的完整路径时,系统会先在当前目录寻找是否存在a.exe,如果找到,直接运行:如果没有找到,会去path路径下面找.设置path, ...

  10. C# volatile 摘录

    C# 参考 volatile 关键字指示一个字段可以由多个同时执行的线程修改. 声明为 volatile 的字段不受编译器优化(假定由单个线程访问)的限制. 这样可以确保该字段在任何时间呈现的都是最新 ...