#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 鍵 值...