C語言實(shí)現(xiàn)讀取配置文件

* 函數(shù)名:         GetIniKeyString
* 入口參數(shù):        title
*                      配置文件中一組數(shù)據(jù)的標(biāo)識
*                  key
*                      這組數(shù)據(jù)中要讀出的值的標(biāo)識
*                  filename
*                      要讀取的文件路徑
* 返回值:         找到需要查的值則返回正確結(jié)果 0
*                  否則返回-1
*/
int GetIniKeyString(const char* title, const char* key, const char* filename, char* buf)
{
   FILE* fp;
   int  flag = 0;
   char sTitle[64], * wTmp;
   char sLine[1024];
   
 //將title 賦值給sTitle
   sprintf(sTitle, "[%s]", title);

   if (NULL == ( fp = fopen(filename, "r") )) {
       perror("fopen");
       return -1;
   }

   while (NULL != fgets(sLine, 1024, fp)) {
       // 這是注釋行  
       if (0 == strncmp("http://", sLine, 2)) 
           continue;
       if ('#' == sLine[0])              
           continue;

       wTmp = strchr(sLine, '='); //找到配置文件首次出出現(xiàn)等號的位置 未找到返回NULL

       if ((NULL != wTmp) && (1 == flag)) {
           if (0 == strncmp(key, sLine, strlen(key))) { // 長度依文件讀取的為準(zhǔn)  
               sLine[strlen(sLine) - 1] = '\0';
               fclose(fp);

               while (*(wTmp + 1) == ' ') { //跳過空格
                   wTmp++;
               }

               strcpy(buf, wTmp + 1); //賦值
               return 0;
           }
       }
       else {
           if (0 == strncmp(sTitle, sLine, strlen(sTitle))) { // 長度依文件讀取的為準(zhǔn)  
               flag = 1; // 找到標(biāo)題位置  
           }
       }
   }
   fclose(fp);
   return -1;
}

一些所用到的C庫函數(shù)

strncmp()

int strncmp(const char *str1, const char *str2, size_t n)

str1str2 進(jìn)行比較,最多比較前 n 個(gè)字節(jié)耻煤。

該函數(shù)返回值如下:

  • 如果返回值 < 0,則表示 str1 小于 str2。
  • 如果返回值 > 0牙捉,則表示 str2 小于 str1肴敛。
  • 如果返回值 = 0术裸,則表示 str1 等于 str2。

fgets()

char *fgets(char *str, int n, FILE *stream)

從指定的流 stream 讀取一行黄虱,并把它存儲在 str 所指向的字符串內(nèi)。當(dāng)讀取 (n-1) 個(gè)字符時(shí)庸诱,或者讀取到換行符時(shí)捻浦,或者到達(dá)文件末尾時(shí),它會停止桥爽,具體視情況而定朱灿。

perror()

C 庫函數(shù) void perror(const char *str)

把一個(gè)描述性錯誤消息輸出到標(biāo)準(zhǔn)錯誤 stderr。首先輸出字符串 str聚谁,后跟一個(gè)冒號母剥,然后是一個(gè)空格。

strchr()

char *strchr(const char *str, int c)

在參數(shù) str 所指向的字符串中搜索第一次出現(xiàn)字符 c(一個(gè)無符號字符)的位置。

該函數(shù)返回在字符串 str 中第一次出現(xiàn)字符 c 的位置环疼,如果未找到該字符則返回 NULL.

strlen()

Strlen所作的是一個(gè)計(jì)數(shù)器的工作习霹,它從內(nèi)存的某個(gè)位置(可以是字符串開頭,中間某個(gè)位置炫隶,甚至是某個(gè)不確定的內(nèi)存區(qū)域)開始掃描淋叶,直到碰到第一個(gè)字符串結(jié)束符'\0'為止,然后返回計(jì)數(shù)器值(長度不包含'\0')伪阶。

頭文件:string.h或cstring

格式: strlen (字符指針表達(dá)式)

功能:計(jì)算給定字符串的(unsigned int型)長度煞檩,不包括'\0'在內(nèi)

說明:返回s的長度,不包括結(jié)束符NULL栅贴。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末斟湃,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子檐薯,更是在濱河造成了極大的恐慌凝赛,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,884評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件坛缕,死亡現(xiàn)場離奇詭異墓猎,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)赚楚,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,347評論 3 385
  • 文/潘曉璐 我一進(jìn)店門毙沾,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人宠页,你說我怎么就攤上這事左胞。” “怎么了举户?”我有些...
    開封第一講書人閱讀 157,435評論 0 348
  • 文/不壞的土叔 我叫張陵罩句,是天一觀的道長。 經(jīng)常有香客問我敛摘,道長门烂,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,509評論 1 284
  • 正文 為了忘掉前任兄淫,我火速辦了婚禮屯远,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘捕虽。我一直安慰自己慨丐,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,611評論 6 386
  • 文/花漫 我一把揭開白布泄私。 她就那樣靜靜地躺著房揭,像睡著了一般备闲。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上捅暴,一...
    開封第一講書人閱讀 49,837評論 1 290
  • 那天恬砂,我揣著相機(jī)與錄音,去河邊找鬼蓬痒。 笑死泻骤,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的梧奢。 我是一名探鬼主播狱掂,決...
    沈念sama閱讀 38,987評論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼亲轨!你這毒婦竟也來了趋惨?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,730評論 0 267
  • 序言:老撾萬榮一對情侶失蹤惦蚊,失蹤者是張志新(化名)和其女友劉穎希柿,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體养筒,經(jīng)...
    沈念sama閱讀 44,194評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,525評論 2 327
  • 正文 我和宋清朗相戀三年端姚,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了晕粪。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,664評論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡渐裸,死狀恐怖巫湘,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情昏鹃,我是刑警寧澤尚氛,帶...
    沈念sama閱讀 34,334評論 4 330
  • 正文 年R本政府宣布,位于F島的核電站洞渤,受9級特大地震影響阅嘶,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜载迄,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,944評論 3 313
  • 文/蒙蒙 一讯柔、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧护昧,春花似錦魂迄、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,764評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽熊昌。三九已至,卻和暖如春湿酸,著一層夾襖步出監(jiān)牢的瞬間婿屹,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,997評論 1 266
  • 我被黑心中介騙來泰國打工稿械, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留选泻,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,389評論 2 360
  • 正文 我出身青樓美莫,卻偏偏與公主長得像页眯,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個(gè)殘疾皇子厢呵,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,554評論 2 349