从配置文件中读取所需要的参数。

配置文件为ini的格式,内容为:

#登陆用户

[User]
 USERNAME = lpp

 PASSWORD = lpp0000

[User]是段域

USERNAME和PASSWORD是子项,=后面是子项对应的值

函数实现为:

/******************************************************************************
* 函数名: GetKeyValue
* 函数功能:根据所谓关键字获取值
* 输入: szBuffer:行内容
            iPos   从哪个位置开始开始搜索"="位置
            szOutBuffer  输出值内容
* 返回值: 0成功,其他失败
*******************************************************************************/
int GetKeyValue(char *szBuffer, int iPos,char *szOutBuffer)
{
        int iIndex = 0;

        int iBufLen = strlen( szBuffer );
        iIndex = iPos;

        while ( iIndex < iBufLen)
       {
                    if  ( szBuffer[iIndex] == '=' )
                   {
                         iIndex++;
                         break;
                   }
                    iIndex++;
       }

      if  ( iIndex < iBufLen )
      {
              strcpy(szOutBuffer,szBuffer + iIndex );
      }
  
      printf ("%s",szOutBuffer);
      return 0;
}

 


/******************************************************************************
* 函数名: ReadParaFromConfigFile
* 函数功能:从配置文件读取参数
* 输入: szFileName:文件完整路径
            szSegName   段名
            szKeyName 
* 返回值: 0成功,其他失败
*******************************************************************************/
int ReadParaFromConfigFile(char *szFileName,char *szSegName,char *szKeyName,char *szOutBuffer)
{
           FILE  *pConfigFile;
          bool   bFoundFlag = false;

           char  szBuffer[40]={0};
           char  szSegmentName[30]={0};

           //构造段名
          sprintf(szSegmentName,"[%s]",szSegName);

           //以只读文件打开配置文件
         if  (( pConfigFile = fopen(szFileName,"r" )) == NULL )
         {
                  printf("打开%s文件错误!\n",szFileName );
                  return -1;
         }

         while ( !feof( pConfigFile ))
        {
                 //从参数文件中读入一行
                fgets( szBuffer,40,pConfigFile );
       
               //#是注释语句,过滤掉
               if (szBuffer[0]=='#')
               {
                       continue;
               }
                printf("szBuffer=%s\n",szBuffer);

                //找到对应的值,并且找到下一个段
               if  ( szBuffer[0] == '[' )
               { 
                        //查找本段开始位置
                         if  ( strncmp( szBuffer,szSegmentName,strlen( szSegmentName )) == 0 )
                        {
                                  bFoundFlag = true;
                        }

                      
                }

                            //查找段域里的子项目
            if  (bFoundFlag)
            {   
                   if  (strncmp(szBuffer,szKeyName,strlen( szKeyName )) == 0)
                  { 
                         //获取KEY所对应的值。
                          GetKeyValue( szBuffer,strlen(szKeyName),szOutBuffer );
                          break;
                 }
             }
       }

    

       if (szOutBuffer==NULL)

      {

               return -1;

      }

        fclose( pConfigFile );
       return  0;
}

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值