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

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

C 讀取ini文件的實例詳解

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

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
一夜七次郎国产精品亚洲| 欧美xxxwww| 俺也去精品视频在线观看| 最近2019年手机中文字幕| 日韩电影中文字幕在线观看| 精品激情国产视频| 欧美日韩性视频| 久久视频这里只有精品| 亚洲肉体裸体xxxx137| 亚洲大胆人体视频| 97精品一区二区三区| 97成人精品视频在线观看| 国产欧美日韩精品专区| 国产亚洲aⅴaaaaaa毛片| 在线亚洲男人天堂| 精品成人在线视频| 日韩高清免费在线| 美女999久久久精品视频| 久久精品视频va| 91欧美精品成人综合在线观看| 精品久久中文字幕| 精品无人国产偷自产在线| 日韩精品视频免费在线观看| 日韩成人中文字幕在线观看| 亚洲欧美在线磁力| 成人在线视频网| 久久精品2019中文字幕| 欧美日韩国产中文精品字幕自在自线| 国产精品色婷婷视频| 亚洲已满18点击进入在线看片| 日韩精品在线视频| 亚洲成人精品av| 国产精品视频免费在线| 国产精品777| 91精品国产综合久久男男| 亚洲国产精彩中文乱码av在线播放| 在线播放国产一区中文字幕剧情欧美| 久久精品国产91精品亚洲| 成人乱色短篇合集| 亚洲va久久久噜噜噜久久天堂| 国产一区二区美女视频| 91精品国产高清自在线看超| 97精品在线视频| 亚洲国产精品va在线观看黑人| 成人午夜小视频| 国产日韩精品在线| 日韩美女写真福利在线观看| 在线看欧美日韩| 久久久久久一区二区三区| 欧洲成人在线观看| 91精品国产色综合| 国产日韩换脸av一区在线观看| 96精品久久久久中文字幕| 日韩av网址在线观看| 欧美一区二区三区艳史| 久久精品一本久久99精品| 一区二区欧美激情| 国产视频亚洲精品| 久久精品视频亚洲| 色妞欧美日韩在线| 精品国产91久久久久久老师| 亚洲天天在线日亚洲洲精| 国产精品久久二区| 97超碰蝌蚪网人人做人人爽| 精品国产欧美成人夜夜嗨| www.日韩.com| 国产欧美亚洲视频| 精品美女久久久久久免费| 精品欧美aⅴ在线网站| 精品免费在线视频| 亚洲a中文字幕| 国产日韩欧美中文| 欧美华人在线视频| 亚洲精品久久久久中文字幕二区| 成人中文字幕+乱码+中文字幕| 欧美www在线| 欧美大片在线看免费观看| 51视频国产精品一区二区| 姬川优奈aav一区二区| 亚洲免费福利视频| 毛片精品免费在线观看| 国模gogo一区二区大胆私拍| 欧美成人中文字幕| 亚洲福利视频免费观看| 久久久亚洲天堂| 日韩美女福利视频| 国内精品久久影院| 日本国产欧美一区二区三区| 欧美精品18videos性欧美| 午夜精品一区二区三区av| 成人中文字幕在线观看| 欧美人在线观看| 亚洲国产另类久久精品| 欧美高清视频在线| 午夜精品久久久久久久久久久久久| 亚洲天堂2020| 国产91露脸中文字幕在线| 日本高清+成人网在线观看| 欧美日韩国产专区| 97香蕉超级碰碰久久免费的优势| 91丝袜美腿美女视频网站| 欧美激情久久久久久| 午夜精品久久久久久久久久久久久| 欧美午夜视频一区二区| 亚洲国产天堂网精品网站| 97av在线视频| 欧美视频在线观看免费网址| 国产精品主播视频| 国内外成人免费激情在线视频网站| 国外日韩电影在线观看| 欧美亚洲另类视频| 欧美激情免费视频| 欧美激情亚洲综合一区| 国产精品美乳一区二区免费| 国内偷自视频区视频综合| 欧美精品在线免费观看| 亚洲黄色在线看| 日韩中文在线中文网三级| 日韩成人性视频| 色综合伊人色综合网站| 欧美大全免费观看电视剧大泉洋| 国产精品久久久久久久天堂| 久久久国产91| 欧美精品精品精品精品免费| 精品成人国产在线观看男人呻吟| 热门国产精品亚洲第一区在线| 日韩三级成人av网| 91天堂在线观看| 国产丝袜高跟一区| 精品久久久久国产| 精品久久香蕉国产线看观看亚洲| 中文字幕亚洲在线| 亚洲а∨天堂久久精品9966| 中文字幕国内精品| 亚洲xxxxx| 国产剧情久久久久久| 中文日韩电影网站| 91sao在线观看国产| **欧美日韩vr在线| 国产成人黄色av| 日韩精品在线观看网站| 韩国国内大量揄拍精品视频| 在线看国产精品| 日日骚久久av| 69视频在线免费观看| 久久理论片午夜琪琪电影网| 久久人人爽亚洲精品天堂| 91视频免费网站| 欧美日本国产在线| 亚洲黄色av网站| 精品一区二区三区四区在线| 亚洲国产99精品国自产| 亚洲欧洲美洲在线综合| 91免费的视频在线播放| 精品少妇v888av| 欧美性在线视频| 91精品视频免费看| 91久久久久久久久久| 欧美日韩国产中文字幕| 国产98色在线| 日韩电影第一页| 欧美日韩中文字幕在线视频| 国产精品日本精品| 亚洲一区二区黄|