linux c配置文件书写格式,读取配置文件源代码[linux c]
轉自:http://gcody.wwww.blog.ccidnet.com/blog-htm-do-showone-uid-36931-type-blog-itemid-114988.html
自己今天根據項目里的需要編寫出來的很簡單的函數,讀取配置文件的一行內容,配置文件格式為:
#888888注釋
name = value
可以包含注釋,不用考慮空格,和項目名稱大小寫,函數返回項目內容。
#ifndef READCONF_H
#define READCONF_H
#include "head.h"
#define CONLINELENGTH 1024 //配置文件一行的長度最大值
char *ReadConfigfile(char *fileName, char *item);
#endif
#include "readconf.h" /************************** *函數功能:讀取配置文件的一行信息 *輸入參數:配置文件的名字fileName,要讀取的項目名稱item(不用考慮空格及大小寫) *輸出結果:項目信息 *返回值:成功返回信息內容,出錯返回NULL *******************************/ char *ReadConfigfile(char *fileName, char *item) { ?FILE *fp; ?char *locate = NULL; ?char *pmove = NULL; ?char confLine[CONLINELENGTH] = {}; ?char context[CONLINELENGTH] ={}; ?int result = 1; ?char *pline; ?int itl; ? ?? ?if((fp = fopen(fileName, "r")) == NULL) ?{ ??printf("Open file : %s failed!!/n", fileName);? ??return NULL; ?} ? ?while(fgets(confLine, CONLINELENGTH, fp) != NULL) ?{ ??pline = confLine; ??if(*pline == '#') ??{ ???memset(confLine, '0', CONLINELENGTH); ???continue; ??} ??while(isspace(*pline) != 0)pline++; ??locate = strchr(pline, '='); ??if(locate == NULL) ??????????????? {??????? ???memset(confLine, '0', CONLINELENGTH); ??????????????????????? continue; ??????????????? } ??pmove = locate; ??pmove--; ??while(isspace(*pmove) != 0)pmove--; ??itl = pmove - pline + 1; ??if(itl == strlen(item)) ??{??? ???result = strncasecmp(pline, item, itl); ???if(result == 0) ???{ ????locate++; ????while(isspace(*locate) != 0)locate++; ????pmove = locate; ????while(isspace(*pmove) == 0)pmove++; ????if(pmove-locate+1>0) ????{ ?????strncpy(context, locate, pmove-locate+1); ?????break; ????} ????else ????{ ?????return NULL; ????} ???} ???else ???{ ????memset(confLine, '0', CONLINELENGTH); ????continue; ???} ??} ??else ??{ ???memset(confLine, '0', CONLINELENGTH); ???continue;? ??} ?} ?fclose(fp); ? ?return context; }
總結
以上是生活随笔為你收集整理的linux c配置文件书写格式,读取配置文件源代码[linux c]的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: c程序隐藏linux,linux 下隐藏
- 下一篇: linux 路由指向策略,Linux 路