C语言中配置文件解析案例

int parse_config()
{
    FILE *fp;
    int ret = 0, count = 0, err = 0;
    int id,flag;
    char *type,*name;
    char buffer[MAX_LINE_LEN]={0};

    fp = fopen(PCBA_SUPPORT_CONFIG, "r");
    if(fp == NULL) {
        LOGE("mmitest open %s failed! %d IN", PCBA_SUPPORT_CONFIG, __LINE__);
        return -1;
    }

    /* parse line by line */
    ret = 0;
    while(fgets(buffer, MAX_LINE_LEN, fp) != NULL) {
        if('#'==buffer[0])
            continue;
        if((buffer[0]>='0') && (buffer[0]<='9')){
            ret = parse_case_entries(buffer,&id,&flag);
            if(ret != 0) {
                LOGD("mmitest parse %s,buffer=%s return %d.  reload",PCBA_SUPPORT_CONFIG, buffer,ret);
                fclose(fp);
                return -1;
            }
            support_result[count].id = id;
            support_result[count++].support= flag;
            err = 1;
        }else if(!strncmp("sensor", buffer, 6)){
            ret = parse_sensor_entries(buffer);
            if(ret != 0) {
                LOGD("mmitest parse %s,buffer=%s return %d.  reload",PCBA_SUPPORT_CONFIG, buffer,ret);
                fclose(fp);
                return -1;
            }
            err = 1;
        }else if(!strncmp("key", buffer, 3)){
            ret = parse_key_entries(buffer);
            if(ret != 0) {
                LOGD("mmitest parse %s,buffer=%s return %d.  reload",PCBA_SUPPORT_CONFIG, buffer,ret);
                fclose(fp);
                return -1;
            }
            err = 1;
        }
        if(0 == err)
            LOGD("can't check line = %s", buffer);
        err = 0;
    }

    fclose(fp);
    if(count < TOTAL_NUM) {
        LOGD("mmitest parse slog.conf failed");
    }

    return ret;
}


#define PCBA_SUPPORT_CONFIG   "/system/etc/factorytest/PCBA.conf"
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值