首页 > 其他 > 详细

自定义配置文件读取

时间:2019-04-17 10:47:02      阅读:138      评论:0      收藏:0      [点我收藏+]

读取配置文件 以#开头的行是注释行  键和值 用空格分开 一行一个键值对

如:

#  注释

key1 2

key2  aab

增加结构体 Config的成员key(自行定义的变量名)存变量, 添加代码

        if( strcasecmp(key,"key")==0 ) {
            strncpy(sConfig->key,val,128);
        }
获取值。
typedef struct 
{
    int port;
    char rootDir[128];
} Config;
/**
 * read config from httpd.conf 
 * parameters : file name 
 * return 
 */
/**
 * [readCfg read conf  key val ]
 * @param filename [file name ]
 * @param sConfig  [config struct ]
 */
void readCfg(char *filename, struct Config* sConfig)
{
    FILE *pf = NULL;
    char buf[2048];
    int i = 0,j = 0;
    char key[128];
    char val[128];

    pf = fopen(filename, "r+");
    if (NULL==pf){
        perror("open config file error. use default config.");
        return;
    }
    while(!feof(pf)) {
        fgets(buf,2048,pf);
        i = 0; j = 0;
        printf("%s\n", buf);
        // get key 
        while (!isspace(buf[i]) && (i < strlen(buf) - 1))
        {
            key[j] = buf[i];
            i++;
            j++;
        }
        key[j] = 0;
        printf("%s\n", key);

        if (#==key[0]) continue;
        // get val
        i++; j=0;
        while (!isspace(buf[i]) && (i < strlen(buf) - 1))
        {
            val[j] = buf[i];
            i++;
            j++;
        }
        val[j] = 0;
        printf("%s\n", val);

        if( strcasecmp(key,"port")==0 ) {
            sConfig->port = atoi(val);
        }

        if( strcasecmp(key,"rootDir")==0 ) {
            strncpy(sConfig->rootDir,val,128);
        }
    }
    fclose(pf);
}

 

自定义配置文件读取

原文:https://www.cnblogs.com/swing07/p/10527297.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!