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


  • 相关阅读:
    下载的谷歌浏览器打不开设置等 报崩溃 新版谷歌crx插件不让拖拽安装问题 cnpm安装问题
    webpack相关面试题
    京东改版提高的性能方面
    对于程序员来说拿到需求之后的那些事(项目管理、需求预估工期等等)
    前端迈向全栈的知识储备路程
    最近的Taro小程序和JD小程序以及原生小程序对比优势
    【转】vmware安装ubuntu详细步骤
    解决主机telnet vmware(ubuntu)不通的问题
    Byte、KB、MB、GB、TB、PB、EB、ZB、YB、DB、NB
    一些协议的链接
  • 原文地址:https://www.cnblogs.com/jediael/p/4304225.html
Copyright © 2011-2022 走看看