使用C语言读取properties文件V1.0

本程序使用C语言读取类似以下格式的properties文件。

path = /etc/wgetrc

launch_on_start = true


下一版目标:

(1)使用指针代替二维数据或者二维数据的容量减少至最低要求。

(2)忽略所有空格,忽略空行及注释行

(3)头文件规范写法。



文件1:main.c

#include <stdio.h>
#include "read_properties.h"

int main(void){
    
    char names[100][100], values[100][100];

    read_properties("/home/lujinhong/scripts/projects/read_properties_file/test.properties", names, values);

    return 0;
}

文件2:read_properties.h

void read_properties(char *pathname, char names[100][100], char values[100][100]);

文件3:read_properties.c

/********************************************************************
 * This file is used to read the names and values from a properties file,
 * and store them in an array.
 *
 * ******************************************************************/

#include "read_properties.h"
#include <stdio.h>
#include <unistd.h>
#include "utils.h"

void read_properties(char *pathname, char names[100][100], char values[100][100]){

    FILE *file;
    char line[100];
    int i = 0;

    file = fopen(pathname, "r");
    while(fgets(line, 100, file)){
        printf("%s", line);                             //just for test, delete it later.
        parseline(line, names[i], values[i]);
        i++;
    }


    fclose(file);

}

文件4:utils.h

void parseline(char *line, char *name, char *value);

文件5:utils.c

/***********************************************************
 * Parse content of the line, and store the name and value. 
 * line example: path=/etc/wgetrc
 *
 * *********************************************************/
void parseline(char *line, char *name, char *value){
     
    int length = 0, equal = 1; //equal will record the location of the '='
    char *begin;

    length = strlen(line);

    for(begin = line; *begin != '=' && equal <= length; begin ++){
            equal++;
    }

    strncpy(name, line, equal - 1); 
    line+=equal;
    strncpy(value, line, length - equal);

    printf("name = %s   value = %s\n", name, value); //just for test, delete it later.

}

运行结果:

path = /etc/wgetrc
name = path     value =  /etc/wgetrc

launch_on_boot = true
name = launch_on_boot   value =  true


转载于:https://www.cnblogs.com/jinhong-lu/archive/2013/02/26/4559547.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值