C语言编写读取配置文件程序

来源:互联网 发布:淘宝男装排名 编辑:程序博客网 时间:2024/06/06 01:25
#include "readconf.h"CONFIGURE *GetConfData(){CONFIGURE *pConf;pConf = (CONFIGURE*)malloc(sizeof(CONFIGURE));memset(pConf, 0x0, sizeof(CONFIGURE));//InitialConf(pConf);if( access("configfile",F_OK)==-1 )        return NULL;else    ReadConf("configfile", pConf);return pConf;}int InitialConf(CONFIGURE *pConf){snprintf(pConf->SampDictPathName, sizeof(pConf->SampDictPathName), "/home/raohl/office/officesrc/sample");snprintf(pConf->LogPathName, sizeof(pConf->LogPathName), "/home/raohl/office/scws/libscws/log");snprintf(pConf->NewSampleName, sizeof(pConf->NewSampleName), "/home/raohl/office/officesrc/newsamp");snprintf(pConf->ScwsDictxdbUtf8, sizeof(pConf->ScwsDictxdbUtf8), "/usr/local/scws/etc/dict_chs_utf8.xdb");snprintf(pConf->ScwsRuleIni, sizeof(pConf->ScwsRuleIni), "/usr/local/scws/etc/rules.utf8.ini");snprintf(pConf->LogFileName, sizeof(pConf->LogFileName), "scws.log");  snprintf(pConf->AttrIgnore, sizeof(pConf->AttrIgnore), "~en");  pConf->SingelSampTlimit=3000;return 0;}int ReadConf(char *sFileName, CONFIGURE *pConf){char sLine[1025], *sTmp;FILE *pFile = NULL;int n = 0;pFile = fopen(sFileName, "r");if(!pFile){printf("can't open the configure file!\n");return 0;}memset(sLine,0,1025);while( fgets(sLine, sizeof(sLine), pFile) ){sTmp = strchr(sLine, '\r');if(!sTmp)sTmp = strchr(sLine, '\n');if(sTmp)*sTmp = 0;sTmp = strchr(sLine, '#');if(sTmp)*sTmp = 0;sTmp = strchr(sLine, '=');if(!sTmp)continue;*sTmp = 0;++sTmp;if(strcasecmp(sLine, "SAMPDICT") == 0)snprintf(pConf->SampDictPathName, sizeof(pConf->SampDictPathName), "%s", sTmp);else if(strcasecmp(sLine, "LOGFILE") == 0)snprintf(pConf->LogFileName, sizeof(pConf->LogFileName), "%s", sTmp);else if(strcasecmp(sLine, "LOGPATH") == 0)  snprintf(pConf->LogPathName, sizeof(pConf->LogPathName), "%s", sTmp);  else if(strcasecmp(sLine, "NEWSAM") == 0)  snprintf(pConf->NewSampleName, sizeof(pConf->NewSampleName), "%s", sTmp);else if(strcasecmp(sLine, "DICTXDB_UTF8") == 0)    snprintf(pConf->ScwsDictxdbUtf8, sizeof(pConf->ScwsDictxdbUtf8), "%s", sTmp);else if(strcasecmp(sLine, "RULEINI") == 0)    snprintf(pConf->ScwsRuleIni, sizeof(pConf->ScwsRuleIni), "%s", sTmp);      else if(strcasecmp(sLine, "ATTR") == 0)    snprintf(pConf->AttrIgnore, sizeof(pConf->AttrIgnore), "%s", sTmp);      else if(strcasecmp(sLine, "TLIMIT") == 0){n = 0;sscanf(sTmp, "%d", &n);if(n > 0)pConf->SingelSampTlimit = n;}  }fclose(pFile);return 0;}int ShowConf(CONFIGURE *pConf){if (pConf != NULL){  printf("SampDictPathName:%s\n",pConf->SampDictPathName);  printf("LogPathName:%s\n",pConf->LogPathName);  printf("LogFileName:%s\n",pConf->LogFileName);  printf("NewSampleName:%s\n",pConf->NewSampleName);  printf("ScwsDictxdbUtf8:%s\n",pConf->ScwsDictxdbUtf8);  printf("ScwsRuleIni:%s\n",pConf->ScwsRuleIni);  printf("AttrIgnore:%s\n",pConf->AttrIgnore);  printf("SingelSampTlimit:%d\n",pConf->SingelSampTlimit);  }  else  {  printf("CONFIGURE IS NULL!\n");  }  return 0;}
配置文件格式:SAMPDICT=/home/raohl/office/officesrc/sample