首页 > 代码库 > C语言 读取配置文件
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");}
(完)
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。