C讀取配置檔案

2022-03-23 19:14:27 字數 3645 閱讀 5139

#ifndef __cfg_op_h__

#define __cfg_op_h__#ifdef __cplusplus

extern"c

"#endif

#endif

#define  _crt_secure_no_warnings #include 

#include

#include

#define maxline 2048

//獲取配置項

int getcfgitem(char *pfilename /*

in*/, char *pkey /*

in*/, char * pvalue/*

in out

*/, int * pvaluelen /*

out*/

)

while (!feof(fp))//

沒有到達檔案末尾

ptmp = strstr(linebuf, pkey);//

所在行 是不是有key

if (ptmp == null) //

判斷key是不是在

ptmp = ptmp + strlen(pkey); //

mykey1 = myvalude11111111 ==> "= myvalude1111111"

ptmp = strchr(ptmp, '='

);

if (ptmp == null) //

判斷key是不是在

//所在行 是不是有key

ptmp = ptmp + 1

;

////

printf("ptmp:%s ", ptmp);

//獲取value 起點

while (1

)

else

break

; }

}//獲取valude結束點

while (1

)

else

}pend =ptmp;

//賦值

*pvaluelen = pend-pbegin;

memcpy(pvalue, pbegin, pend-pbegin);

}end:

if (fp ==null)

return0;

}//寫配置項

//實現流程

//迴圈讀每一行,檢查key配置項是否存在 若存在修改對應value值

//若不存在,在檔案末尾 新增 "key = value"

//難點:如何修改檔案流中的值

int writecfgitem(char *pfilename /*

in*/, char *pkey /*

in*/, char * pvalue/*

in*/, int valuelen /*

in*/);

if (pfilename==null || pkey==null || pvalue==null)

fp = fopen(pfilename, "r+"

);

if (fp ==null)

if (fp ==null)//檔案不存在就去建立乙個檔案

}fseek(fp,

0l, seek_end); //剛開始檔案指標指向的是檔案的開頭,

把檔案指標從0位置開始,移動到檔案末尾

//獲取檔案長度;

length =ftell(fp);//fp指向了檔案的末尾

fseek(fp,

0l, seek_set);//再把檔案指標指向檔案的頭部

if (length > 1024*8

) //檔案不能超過8k,不然記憶體不支援

while (!feof(fp))

//key關鍵字是否在本行

ptmp =strstr(linebuf, pkey);

if (ptmp == null) //

key關鍵字不在本行, copy到filebuf中

else

//key關鍵在在本行中,替換舊的行,再copy到filebuf中

}//所有的行中

若key關鍵字,不存在 追加

if (itag == 0

)

else

//若key關鍵字,存在,則重新建立檔案

fp = fopen(pfilename, "

w+t"

); //重新建立乙個檔案

if (fp ==null)

fputs(filebuf, fp);//把所有檔案緩衝的內容輸入到fp,覆蓋原來的檔案

//fwrite(filebuf, sizeof(char), strlen(filebuf), fp);

}end:

if (fp !=null)

return

rv;}

#define  _crt_secure_no_warnings #include 

#include

#include

#include

"cfg_op.h

"#define cfgname "c:/mycfg.ini"

void

mymenu()

//獲取配置項

inttgetcfg()

;

char valude[1024] = ;

int vlen = 0

; printf(

"\n請鍵入key:");

scanf("%s

", name);

ret = getcfgitem(cfgname /*

in*/, name /*

in*/, valude/*

in*/, &vlen);

if (ret != 0

)

printf(

"valude:%s \n

", valude);}//

寫配置項

inttwritecfg()

;

char valude[1024] = ;

printf(

"\n請鍵入key:");

scanf("%s

", name);

printf(

"\n請鍵入valude:");

scanf("%s

", valude);

ret = writecfgitem(cfgname /*

in*/, name /*

in*/, valude/*

in*/,strlen(valude) /*

in*/

);

if (ret != 0

)

printf(

"你的輸入是:%s = %s \n

", name , valude);

return

ret;

}void

main()

}printf(

"hello...\n");

system(

"pause");

return

;}

C 讀取配置檔案

1 首先引入標頭檔案 include 2 獲取應用程式的當前路徑 char buf 1000 getcurrentdirectory 1000,buf 得到當前工作路徑3 獲取配置檔案的路徑 char path 1024 definesysconfig config.ini sprintf path...

C 讀取配置檔案

1 利用系統介面,讀取ini配置檔案,詳情可查詢msdn。這裡做簡單宣告 宣告讀ini檔案的api函式 dllimport kernel32 private static extern int getprivateprofilestring string section,string key,str...

C 讀取ini配置檔案

using system using system.io using system.runtime.interopservices using system.text todo 在此處新增建構函式邏輯 public class iniclass 寫入ini檔案 專案名稱 如 typename 鍵 值...