亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > C++ > 正文

C 讀取ini文件的實例詳解

2020-05-23 13:35:53
字體:
來源:轉載
供稿:網友

C 讀取ini文件

前言:

在Windows下可以用GetPrivateProfileString或GetPrivateProfileInt方便讀取.ini配置文件內容,但是在Linux平臺上就一籌莫展了。為了解決該問題,打算用C來讀取.ini,即可不受平臺的限制了。

#define CONF_FILE_PATH "Config.ini"#include <string.h>#ifdef WIN32#include <Windows.h>#include <stdio.h>#else#define MAX_PATH 260#include <unistd.h>#include <fcntl.h>#include <stdio.h>#include <stdlib.h>#include <stdarg.h>#endifchar g_szConfigPath[MAX_PATH];//獲取當前程序目錄int GetCurrentPath(char buf[],char *pFileName){#ifdef WIN32GetModuleFileName(NULL,buf,MAX_PATH);#elsechar pidfile[64];int bytes;int fd;sprintf(pidfile, "/proc/%d/cmdline", getpid());fd = open(pidfile, O_RDONLY, 0);bytes = read(fd, buf, 256);close(fd);buf[MAX_PATH] = '/0';#endifchar * p = &buf[strlen(buf)];do{*p = '/0';p--;#ifdef WIN32} while('//' != *p );#else} while('/' != *p );#endifp++;//配置文件目錄memcpy(p,pFileName,strlen(pFileName));return 0;}//從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){printf("have no such file /n");return "";}while(!feof(fp)){rtnval = fgetc(fp);if(rtnval == EOF){break;}else{szLine[i++] = rtnval;}if(rtnval == '/n'){#ifndef WIN32i--;#endifszLine[--i] = '/0';i = 0;tmp = strchr(szLine, '=');if(( tmp != NULL )&&(flag == 1)){if(strstr(szLine,key)!=NULL){//注釋行if ('#' == szLine[0]){}else if ( '//' == szLine[0] && '//' == szLine[1] ){}else{//找打key對應變量strcpy(tmpstr,tmp+1);fclose(fp);return tmpstr;}}}else{strcpy(tmpstr,"[");strcat(tmpstr,title);strcat(tmpstr,"]");if( strncmp(tmpstr,szLine,strlen(tmpstr)) == 0 ){//找到titleflag = 1;}}}}fclose(fp);return "";}//從INI文件讀取整類型數據int GetIniKeyInt(char *title,char *key,char *filename){return atoi(GetIniKeyString(title,key,filename));}int main(int argc,char* argv[]){char buf[MAX_PATH];memset(buf,0,sizeof(buf));GetCurrentPath(buf,CONF_FILE_PATH);strcpy(g_szConfigPath,buf);int iCatAge;char szCatName[32];iCatAge = GetIniKeyInt("CAT","age",g_szConfigPath);strcpy(szCatName,GetIniKeyString("CAT","name",g_szConfigPath));return 0;}
#define CONF_FILE_PATH "Config.ini"  #include <string.h>  #ifdef WIN32 #include <Windows.h> #include <stdio.h> #else  #define MAX_PATH 260  #include <unistd.h> #include <fcntl.h> #include <stdio.h> #include <stdlib.h> #include <stdarg.h> #endif  char g_szConfigPath[MAX_PATH];  //獲取當前程序目錄 int GetCurrentPath(char buf[],char *pFileName) { #ifdef WIN32   GetModuleFileName(NULL,buf,MAX_PATH);  #else   char pidfile[64];   int bytes;   int fd;    sprintf(pidfile, "/proc/%d/cmdline", getpid());    fd = open(pidfile, O_RDONLY, 0);   bytes = read(fd, buf, 256);   close(fd);   buf[MAX_PATH] = '/0';  #endif   char * p = &buf[strlen(buf)];   do    {     *p = '/0';     p--; #ifdef WIN32   } while( '//' != *p ); #else   } while( '/' != *p ); #endif    p++;    //配置文件目錄   memcpy(p,pFileName,strlen(pFileName));   return 0; }  //從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)    {      printf("have  no  such  file /n");     return "";    }   while(!feof(fp))    {      rtnval = fgetc(fp);      if(rtnval == EOF)      {        break;      }      else      {        szLine[i++] = rtnval;      }      if(rtnval == '/n')      {  #ifndef WIN32       i--; #endif        szLine[--i] = '/0';       i = 0;        tmp = strchr(szLine, '=');         if(( tmp != NULL )&&(flag == 1))        {          if(strstr(szLine,key)!=NULL)          {            //注釋行           if ('#' == szLine[0])           {           }           else if ( '//' == szLine[0] && '//' == szLine[1] )           {                        }           else           {             //找打key對應變量             strcpy(tmpstr,tmp+1);              fclose(fp);             return tmpstr;            }         }        }       else        {          strcpy(tmpstr,"[");          strcat(tmpstr,title);          strcat(tmpstr,"]");         if( strncmp(tmpstr,szLine,strlen(tmpstr)) == 0 )          {           //找到title           flag = 1;          }       }     }   }   fclose(fp);    return "";  }  //從INI文件讀取整類型數據 int GetIniKeyInt(char *title,char *key,char *filename) {   return atoi(GetIniKeyString(title,key,filename)); }  int main(int argc, char* argv[]) {   char buf[MAX_PATH];   memset(buf,0,sizeof(buf));   GetCurrentPath(buf,CONF_FILE_PATH);   strcpy(g_szConfigPath,buf);    int iCatAge;   char szCatName[32];      iCatAge = GetIniKeyInt("CAT","age",g_szConfigPath);   strcpy(szCatName,GetIniKeyString("CAT","name",g_szConfigPath));    return 0; } 

下邊是配置文件:

[CAT]age=2name=Tom

 如有疑問請留言或者到本站社區交流討論,感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
久久精品91久久香蕉加勒比| 精品中文视频在线| 欧美特黄级在线| 8x海外华人永久免费日韩内陆视频| 国产美女扒开尿口久久久| 亚洲免费视频一区二区| 91精品国产综合久久香蕉的用户体验| 成人免费在线视频网站| 久久中文精品视频| 国产日韩在线视频| 欧美富婆性猛交| 欧美午夜视频在线观看| 成人免费看黄网站| 色综合久久久888| 中文字幕欧美日韩| 精品亚洲一区二区三区| 亚洲国产精品热久久| 91精品国产自产在线| 91中文精品字幕在线视频| 91chinesevideo永久地址| 91av视频导航| 中文精品99久久国产香蕉| 色婷婷成人综合| 午夜精品久久久久久久99黑人| 中文一区二区视频| 亚洲日本中文字幕免费在线不卡| 亚洲aⅴ男人的天堂在线观看| 国产欧美va欧美va香蕉在| 毛片精品免费在线观看| 日韩欧美高清在线视频| 成人av番号网| 欧美精品亚州精品| 亚洲精品有码在线| 91高清视频免费| 久久久久久com| 亚洲色图美腿丝袜| 欧美精品videos性欧美| 欧洲一区二区视频| 欧美情侣性视频| 久久人人爽国产| 亚洲激情在线视频| 欧美精品福利在线| 国产免费观看久久黄| 日韩成人网免费视频| 97国产精品免费视频| 国产精品老女人精品视频| 操日韩av在线电影| 久久精品国产91精品亚洲| 岛国视频午夜一区免费在线观看| 日韩美女在线观看| 国产一区二区三区在线播放免费观看| 欧美高清不卡在线| 久久久久亚洲精品国产| 最好看的2019年中文视频| 国产91热爆ts人妖在线| 欧美国产欧美亚洲国产日韩mv天天看完整| 福利视频第一区| 国产精品一区二区3区| 欧美大片va欧美在线播放| 亚洲精品美女久久久久| 亚洲国产福利在线| 26uuu日韩精品一区二区| 国产精品久久久久久av福利软件| 精品国产1区2区| 国产日韩欧美在线视频观看| 国产精品私拍pans大尺度在线| 色视频www在线播放国产成人| 在线看片第一页欧美| 国产午夜精品一区理论片飘花| 亚洲日本中文字幕免费在线不卡| 国产亚洲激情在线| 亚洲国产婷婷香蕉久久久久久| 性色av一区二区咪爱| 国产精品自产拍在线观看中文| 尤物yw午夜国产精品视频明星| 欧美精品手机在线| www.欧美视频| 成人黄色av免费在线观看| 国内揄拍国内精品少妇国语| 久久久精品一区二区| 午夜精品一区二区三区在线视频| 国产精品一区二区三区免费视频| 欧美裸体xxxx| 精品国产一区二区三区久久久狼| 国产成人在线视频| 亚洲精品aⅴ中文字幕乱码| 午夜精品久久久久久久99热| 国产精品久久久久久搜索| 亚洲欧美国产va在线影院| 欧美日韩亚洲激情| 亚洲精品久久久一区二区三区| 91午夜在线播放| 久久精品国产成人精品| 亚洲精品国产综合区久久久久久久| 亚洲欧美日韩一区在线| 久久久久成人精品| 欧美国产欧美亚洲国产日韩mv天天看完整| 一区二区国产精品视频| 精品网站999www| 精品视频偷偷看在线观看| 国产精品69精品一区二区三区| 国产精品久久久久91| 日韩在线不卡视频| 免费不卡欧美自拍视频| 日韩电影大全免费观看2023年上| 97精品免费视频| 亚洲欧美在线播放| 欧美最顶级的aⅴ艳星| 日韩激情在线视频| 最新69国产成人精品视频免费| 国产日产久久高清欧美一区| 欧美性视频网站| 国产精品久久久亚洲| 性欧美长视频免费观看不卡| 欧美丰满老妇厨房牲生活| 欧美激情第三页| 久久久久国产精品一区| 亚洲第一色中文字幕| 午夜精品一区二区三区在线播放| 亚洲欧美在线x视频| 国产精品入口尤物| 在线日韩第一页| 亚洲xxxx做受欧美| 中文字幕免费精品一区高清| 91成人精品网站| 久久久久免费精品国产| 国产精品69av| 成人黄色大片在线免费观看| 在线成人免费网站| 精品成人在线视频| 国产精品成av人在线视午夜片| 成人国产精品久久久| 日韩风俗一区 二区| 久久综合伊人77777| 中文字幕免费精品一区高清| 操91在线视频| 成人av在线亚洲| 北条麻妃一区二区三区中文字幕| 日韩性生活视频| 日韩免费在线电影| 成人免费视频网址| 精品成人69xx.xyz| 欧美日韩国产一区二区| 亚洲午夜小视频| 久久久在线免费观看| 日韩一区二区在线视频| 精品久久久久久久大神国产| 成人淫片在线看| 夜夜嗨av色综合久久久综合网| 亚洲第一中文字幕在线观看| 狠狠久久五月精品中文字幕| 美女视频黄免费的亚洲男人天堂| 欧美日韩性视频在线| 国产在线精品自拍| 深夜精品寂寞黄网站在线观看| 欧美大片免费看| 色婷婷综合久久久久| 国产成人+综合亚洲+天堂| 国产欧美在线观看| 亚洲在线观看视频| 亚洲人成电影在线| 欧美另类在线观看| 成人h视频在线观看播放| 欧美精品在线看|