linux读取配置文件每一行,Linux下读取配置文件

/*********************************************

FileName: FileScan.c

Describe: Functions For Read Config File

Author:  Eboy

Date:  2003.8.28

****************************************************/

#ifdef _WINDOWS_

#include

#include

#endif

#include

#include

#include

#define CONF_FILE_MAX_LINE 50

#define CONF_FILE_MAX_ROW 100

/*

* 函数名:IsBreakChar()

* 功能: 判断是否为行结束符

* 返回值:1表示真,0表示假

* 参数说明:char ch 需要判断的字符

*

*/

int IsBreakChar(char ch)

{

if(ch==9) //Tab Key

return 0;

if((ch<32)&&(ch>;0))

return 1;

else

return 0;

}

/*

* 函数名:ReadLine()

* 功能: 从文件中读出一行

* 参数说明:FILE* fpt 文件描述符

*   char* linestr 输出数据,结尾为'/0'的字符串

*/

int ReadLine(FILE* fpt, char *linestr)

{

int i,rv;

char cc;

char buf[CONF_FILE_MAX_ROW];

if(feof(fpt)){

return 1;

}

for(i=0;i

rv=fread(&cc,1,1,fpt);

if(rv<1)

break;

if(IsBreakChar(cc)==1)

break;

buf[i]=cc;

}

buf[i]='/0';

strcpy(linestr,buf);

return 0;

}

/*

* 函数名:TrimSpace()

* 功能: 将字符串中的空格删除

* 参数说明:char_PTR ori 输入字符串

*   char * trim 输出字符串

*/

int TrimSpace(char * ori,char * trim)

{

int i,j,qq,len;

char tmp[CONF_FILE_MAX_ROW];

j=qq=0;

len=strlen(ori);

for(i=0;i

if(qq==1)

tmp[j]=ori;

else{

if(ori<33)

continue;

else{

tmp[j]=ori;

qq=1;

}

}

j++;

}

tmp[j]='/0';

j=qq=0;

for(i=strlen(tmp)-1;i>;=0;i--){

if(qq==1)

trim[j]=tmp;

else{

if(tmp<33)

continue;

else{

trim[j]=tmp;

qq=1;

}

}

j++;

}

trim[j]='/0';

j=strlen(trim);

for(i=0;i

tmp=trim[j-i-1];

}

memcpy(trim,tmp,j);

return 0;

}

/*

* 函数名:ReadSector()

* 功能: 从输入字符串中分解出指定项的值

* 返回值: 如果成功返回0

* 参数说明:char * line 输入字符串

*   char * SectName 指定域的名称

*    char * SectVa   输出指定域的值(返回成功时有效)

*/

int ReadSector(char * line,char * SectName,char * SectVal)

{

int i;

int tlen,equpos=0;

char lineBuf[CONF_FILE_MAX_ROW];

char oriSectName[CONF_FILE_MAX_ROW],tmpSectName[CONF_FILE_MAX_ROW];

char oriSectVal[CONF_FILE_MAX_ROW];

TrimSpace(line,lineBuf);

tlen=strlen(lineBuf);

for(i=0;i

if((lineBuf=='#')||(lineBuf==';'))

break;

}

if(i==0)

return 1;

lineBuf='/0';

tlen=strlen(lineBuf);

for(i=0;i

if(lineBuf=='='){

equpos=i;

break;

}

}

if(equpos==0)

return 1;

memcpy(oriSectName,lineBuf,equpos);

oriSectName[equpos]='/0';

TrimSpace(oriSectName,tmpSectName);

if((SectName[0]=='#')||(SectName[0]==';')){

return 1;

}

if(strcmp(tmpSectName,SectName))

return 1;

memcpy(oriSectVal,lineBuf+equpos+1,tlen-equpos-1);

oriSectVal[tlen-equpos-1]='/0';

TrimSpace(oriSectVal,SectVal);

return 0;

}

/*

* 函数名:AnalizeConfFile()

* 功能: 从指定文件中分解出指定域的值

* 返回值: 如果成功返回0

* 参数说明:char * Filename 指定配置文件名

*   char * SectName 指定域的名称

*    char * SectVa   输出指定域的值(返回成功时有效)

*/

int AnalizeConfFile(char * Filename,char * sector,char * sectval)

{

int i,rv,flag=0;

FILE *fp;

char line[CONF_FILE_MAX_LINE];

char syspath[256];

#ifdef _WINDOWS_ if(Filename!=NULL)  strcpy(syspath,Filename); if(Filename == NULL) {  if ((rv = GetSystemDirectory(syspath,256))<=0)  {  ErrorLocation;  return 1;  }  if (rv >; 3)  strcat(syspath,"/MyFile.ini");  else  strcat(syspath,"MyFile.ini");  //#endif }#else if(Filename != NULL) {  strcpy(syspath,Filename); } if(Filename ==NULL) {  strcpy(syspath,"/etc/MyFile.ini"); }#endif fp=fopen(syspath,"r"); if(fp==NULL) {  return 1; } for(i=0;i

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值