Chinaunix首页 | 论坛 | 博客
  • 博客访问: 103121819
  • 博文数量: 19283
  • 博客积分: 9968
  • 博客等级: 上将
  • 技术积分: 196062
  • 用 户 组: 普通用户
  • 注册时间: 2007-02-07 14:28
文章分类

全部博文(19283)

文章存档

2011年(1)

2009年(125)

2008年(19094)

2007年(63)

分类: C/C++

2008-05-01 17:31:03

     自己今天根据项目里的需要编写出来的很简单的函数,读取配置文件的一行内容,配置文件格式为:


#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;
}

阅读(470) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~