原创:linux下C语言读取配置文件配置代码工程中的变量

 一.代码部分

#include <stdio.h>

#include <string.h>

#define   FILENAME                       "./configure.txt"

#define   PROFILE_DELIMITER        "="

struct id_info{

        char name[16];

        char sex[8];

        char national[16];

        char birth[16];

        char address[16];

        char id[32];

        int  struct_len;

};

int ConfigureOneMemberOfTheStructure(const char *filename, char *grep, const char *cut,const int grep_len);

int ConfigureAllMembersOfTheStructure(const char *filename, const char *cut ,struct id_info *p_s);

int PrintStructure(const struct id_info s);

int main(void)

{

        struct id_info she_info={"name", "sex", "national", "birth", "address", "id", 6};

        ConfigureAllMembersOfTheStructure(FILENAME, PROFILE_DELIMITER, &she_info);

        PrintStructure(she_info);   

        return 0;  

}

//配置结构体中一个变量

int ConfigureOneMemberOfTheStructure(const char *filename, char *grep, const char *cut,const int grep_len)

{

        //拼接成一条shell命令

        char str[128]="cat ";

        strcat(str, filename);

        strcat(str, " | grep ");

        strcat(str, grep);

        strcat(str, " | cut -d ");

        strcat(str, cut);

        strcat(str, " -f 2");

        //执行shell命令,目的是把配置文件的匹配内容赋值给变量

        FILE *fp=NULL;

        fp = popen(str, "r");

        if(!fp){

                printf("popen failed!\n");

                return -1;

        }  

        memset(str,0,128);

        int rev = fread(grep,1,grep_len,fp);

        grep[rev-1]='\0';  

        pclose(fp);

        fp=NULL;

        return 0;

}

//配置结构体中的全部变量

int ConfigureAllMembersOfTheStructure(const char *filename, const char *cut, struct id_info *p_s)

{

        int i = 0;

        char *p_mem[6] = {p_s->name, p_s->sex, p_s->national, p_s->birth, p_s->address, p_s->id};

        int  len_mem[] = {sizeof(p_s->name),sizeof(p_s->sex),sizeof(p_s->national),

                          sizeof(p_s->birth),sizeof(p_s->address),sizeof(p_s->id)};

        for(i = 0;i < p_s->struct_len;i++){

                ConfigureOneMemberOfTheStructure(filename, p_mem[i], cut, len_mem[i]);

        }  

        return 0;

}

//打印全部的结构体变量

int PrintStructure( struct id_info s)

{

        int i = 0;

        char *p_mem[6] = {s.name, s.sex, s.national, s.birth, s.address, s.id};

        printf("<----------------structure begin--------------------->\n");

        for(i = 0;i < s.struct_len;i++){

                printf("%s\n",p_mem[i]);

        }  

        printf("<----------------structure end------------------------>\n");

        return 0;

}

  二.运行结果

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值