您的位置:首页 > 编程语言 > C语言/C++

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

2013-02-26 10:39 267 查看
#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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐