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[20];
    char value[50];
};

configItem configList[] = {
    {"ip", 0},
    {"port", 0},
    {"line", 0}
};

/*
* 这个函数是对给定的一个字符串寻找以等号分开的键值对
* 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+1); //将等号后的内容拷入value中,跳过等号所以p需要加1
        return 1;
    }
    return 0;
}

/*
*  读取配置函数
*
*/
void Config(char * configFilePath, struct configItem* configVar, int configNum)
{
    int i;
    FILE * pfile;
    char buf[50] = "";  //缓冲字符串
    char key[50] = "";  //配置变量名
    char value[50] = ""; //配置变量值

    //打开配置文件
    pfile = fopen(configFilePath, "r");

    if (pfile == NULL)
    {
        printf("配置文件打开失败!\n");
        exit(-1);
    }

    //依次读取文件的每一行
    while (fgets(buf, 50, pfile))
    {
        //读取键值对
        if (strkv(buf, key, value))
        {
            //读取成功则循环匹配数组
            for (i = 0; i < configNum; i++)
            {
                //名称相等则匹配成功,拷贝value值
                if (strcmp(key, configVar[i].key) == 0)
                {
                    strcpy(configVar[i].value, value);
                }
            }
            //key字符串在strkv函数内部没有给结束符‘\0‘,需要这里重置一下
            //value在strkv中已经给了结束符‘\0‘
            memset(key, 0, strlen(key));
        }

    }
    fclose(pfile);
}

void main()
{
    int i;
    //读取配置文件
    Config("C:\\config.txt",
        configList,
        sizeof(configList)/sizeof(struct configItem)
        );

    for (i = 0; i < sizeof(configList)/sizeof(struct configItem); i++)
    {
        printf("%s=%s \n", configList[i].key, configList[i].value);
    }
    system("pause");
}

(完)

C语言 读取配置文件

时间: 2024-10-01 02:27:25

C语言 读取配置文件的相关文章

Java语言读取配置文件config.properties

一.配置文件config.properties是放在src根目录下的:例如我的是 /PropertiesTest/src/com/xuliugen/project/type.properties 配置文件中的内容如下: left=com.sunny.project.LeftHair right=com.sunny.project.RightHair in=com.sunny.project.InHair 读取配置文件中的代码如下: public class PropertiesReader {

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

在Installer中,按一般读取配置文件的方法(ConfigurationManager.AppSettings["CultureName"])读取不到内容. 可以这样读取: var config = ConfigurationManager.OpenExeConfiguration(Assembly.GetAssembly(typeof(ProjectInstaller)).Location);string cultureName = config.AppSettings.Sett

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

package cn.com.css.common.util; /** * @brief OSEnum.java 操作系统的枚举 * @attention * @author 涂作权 * @date 2014年4月3日 * @note begin modify by null */ public enum EOSPlatForm { Any("any"), Linux("Linux"), Mac_OS("Mac OS"), Mac_OS_X(&q

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

作者:54dabang 在spring的学习过程之中,我们可以看出通过配置文件来动态管理bean对象的好处(松耦合 可以让零散部分组成一个整体,而这些整体并不在意之间彼此的细节,从而达到了真正的物理上的疏散耦合,而非逻辑,有了IOC之后,我们可以让SPRING充当各框架中的整合器,把技术框架进行完美的结合). Spring实现的一个重要的机制是通过反射(java.lang.reflect)读取配置文件,通过配置文件来动态生成配置文件中的类对象.Java动态加载类主要是为了不改变主程序代码,通过修

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

今天在开发的时候,需要把一些信息放到配置文件中,方便后续的修改,注意到用的是ResourceBundle读取配置文件的方式,记得之前也见过使用Properties的方式,就比较好奇这两种方式的区别,网上查了一下和查了一下Java API手册,简单总结记录一下: ResourceBundle和Properties的一个主要区别就是ResourceBundle支持语言国际化,当程序需要特定于语言环境的对象时,它使用 getBundle 方法加载 ResourceBundle 类: Locale lo

golang模块viper读取配置文件

一.介绍 Viper是一个方便Go语言应用程序处理配置信息的库.它可以处理多种格式的配置.它支持的特性: 设置默认值 从JSON.TOML.YAML.HCL和Java properties文件中读取配置数据 可以监视配置文件的变动.重新读取配置文件 从环境变量中读取配置数据 从远端配置系统中读取数据,并监视它们(比如etcd.Consul) 从命令参数中读物配置 从buffer中读取 调用函数设置配置信息 简单的设置默认值 viper.SetDefault("time", "

Python+Selenium进行UI自动化测试项目中,常用的小技巧2:读取配置文件(configparser,.ini文件)

在自动化测试项目中,可能会碰到一些经常使用的但 很少变化的配置信息,下面就来介绍使用configparser来读取配置信息config.ini 读取的信息(config.ini)如下: [config]platformName=AndroidappPackage=com.sheinsideappActivity=.module.GuideActivitybaseUrl=http://0.0.0.0:4723/wd/hubfindElementTimes=10[cmd]openAppium=nod

转:java读取配置文件的几种方法

转自: http://www.iteye.com/topic/56496 在现实工作中,我们常常需要保存一些系统配置信息,大家一般都会选择配置文件来完成,本文根据笔者工作中用到的读取配置文件的方法小小总结一下,主要叙述的是spring读取配置文件的方法. 一.读取xml配置文件 (一)新建一个java bean(HelloBean.java) java 代码 package chb.demo.vo;   public class HelloBean {   private String hell

A网站引用B服务器虚拟目录文件导致:网站部署到IIS7上出现HTTP 错误 500.19(由于权限不足而无法读取配置文件)的问题

A网站引用B服务器共享目录(虚拟目录)导致:网站部署到IIS7上出现HTTP 错误 500.19(由于权限不足而无法读取配置文件)的问题 本攻略并不是本机的部署导致的HTTP 错误 500.19 问题  本机500.19错误 解决办法连接 HTTP 错误 500.19 - Internal Server Error 无法访问请求的页面,因为该页的相关配置数据无效. 详细错误信息模块 IIS Web Core 通知 BeginRequest 处理程序 尚未确定 错误代码 0x80070005 配置