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

来源:互联网 发布:windows文件共享 编辑:程序博客网 时间:2024/05/13 11:16

本程序使用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/wgetrcname = path     value =  /etc/wgetrclaunch_on_boot = truename = launch_on_boot   value =  true


原创粉丝点击