Linux C 读取.ini文件

char *GetIniKeyString(char *title, char *key, char *filename)
{
 FILE *fp;
 char szLine[1024];
 static char tmpstr[1024];
 int rtnval;
 int i = 0;
 int flag = 0;
 char *tmp;

 if ((fp = fopen(filename, "r")) == NULL)
 {
  LOG_ERROR("Have no such file [%s]", filename);
  return "";
 }
 
 while (!feof(fp))
 {
  rtnval = fgetc(fp);
  
  if (rtnval == EOF)
  {
   break;
  }
  else
  {
   szLine[i++] = rtnval;
  }
  
  if (rtnval == '\n')
  {
   i--;
   
   szLine[--i] = '\0';
   i = 0;
   tmp = strchr(szLine, '=');

   if (tmp != NULL && flag == 1)
   {
    if (strstr(szLine, key) != NULL)
    {
     if ('#' == szLine[0] || ('\/' == szLine[0] && '\/' == szLine[1]))
     {
     
     }
     else
     {
      strcpy(tmpstr, tmp + 1);
      fclose(fp);
      allTrim(tmpstr);
      return tmpstr;
     }
    }
   }
   else
   {
    strcpy(tmpstr, "[");
    strcat(tmpstr, title);
    strcat(tmpstr, "]");
    
    if (strncmp(tmpstr, szLine, strlen(tmpstr)) == 0)
    {
     flag = 1;
    }
   }
  }
 }
 
 fclose(fp);
 return "";
}

int GetIniKeyInt(char *title, char *key, char *filename)
{
 return atoi(GetIniKeyString(title, key, filename));
}

 

---------------------------------------------------------------------

.ini File:

[SOLAR]
udp_port = 320

[MySQL]
sql_server = localhost
sql_user = root
sql_password = root
sql_database = mysql

sql_port = 3306

void readIniFile()
{
memset(&sqlInfo, 0, sizeof(CMSMySQLInfo));

char iniPath[256];
sprintf(iniPath, "%s%s", getRealPath(), CONFIG_FILE);

udp_port = GetIniKeyInt("SOLAR", "udp_port", iniPath);
strcpy(sqlInfo.server, GetIniKeyString("MySQL", "sql_server", iniPath));
strcpy(sqlInfo.user, GetIniKeyString("MySQL", "sql_user", iniPath));
strcpy(sqlInfo.password, GetIniKeyString("MySQL", "sql_password", iniPath));
strcpy(sqlInfo.database, GetIniKeyString("MySQL", "sql_database", iniPath));
sqlInfo.port = GetIniKeyInt("MySQL", "sql_port", iniPath);
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值