zoukankan      html  css  js  c++  java
  • 使用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


  • 相关阅读:
    Python3三位运算
    PyThon3函数的使用
    PyThon3类的基本使用
    PyThon3类的继承
    Python3方法重写
    【BZOJ3307】雨天的尾巴-线段树合并+树上差分
    【CF893F】Subtree Minimum Query-主席树
    【BZOJ2212】Tree Rotations(POI2011)-平衡树启发式合并
    【BZOJ2733】永无乡(HNOI2012)-平衡树启发式合并
    【BZOJ3160】万径人踪灭-FFT+Manacher
  • 原文地址:https://www.cnblogs.com/jediael/p/4304225.html
Copyright © 2011-2022 走看看