• 使用C语言读取properties文件V1.0 分类: H_HISTORY 20130226 12:37 946人阅读 评论(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


    版权声明:本文为博主原创文章,未经博主允许不得转载。

  • 相关阅读:
    Web--2019年5月7日移动端随笔
    Web-css3--19年5月5日随笔
    数据库指令----4月10日
    19--3--14--数据处理
    微信小程序全选,微信小程序checkbox,微信小程序购物车
    手机预览微信小程序
    原生H5页面模拟APP左侧滑动删除效果
    微信小程序实例:实现tabs选项卡效果
    CSS3文本溢出显示省略号
    前端自动化之路之gulp,node.js
  • 原文地址:https://www.cnblogs.com/lujinhong2/p/4637414.html
Copyright © 2020-2023  润新知