当前位置:编程学习 > C/C++ >>

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

本程序使用C语言读取类似以下格式的properties文件。
path = /etc/wgetrc
launch_on_start = true
 
下一版目标:
(1)使用指针代替二维数据或者二维数据的容量减少至最低要求。
(2)忽略所有空格,忽略空行及注释行
(3)头文件规范写法。
 
 
文件1:main.c
[cpp]  
#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
[cpp] 
void read_properties(char *pathname, char names[100][100], char values[100][100]);  
 
文件3:read_properties.c
[cpp] 
/******************************************************************** 
 * 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
[cpp]  
void parseline(char *line, char *name, char *value);  
 
文件5:utils.c
[cpp]  www.zzzyk.com
/*********************************************************** 
 * 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.  
  
}  
 
运行结果:
[plain]  
path = /etc/wgetrc  
name = path     value =  /etc/wgetrc  
  
launch_on_boot = true  
name = launch_on_boot   value =  true  
 
补充:软件开发 , C语言 ,
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,