//配置檔案讀寫專案
#define _crt_secure_no_warnings#include
#include
#include
int writefile(const
char *path/*
in*/, char *pkey/*
in*/, char *pvalue/*
in*/
)
if (pkey ==null)
if (pvalue ==null)
//定義檔案讀指標
file *fpwr = fopen(path, "r+"
);
//判斷檔案是否開啟成功
if (fpwr ==null)
//判斷原來配置檔案裡是否有該節點,有該配置節點執行修改操作,沒有執行新增操作
//準備字元指標陣列,儲存所有的鍵值對
//定義下標
int index = 0
;
char **bufarr = (char **)malloc(sizeof(char *)*(index + 1
));
//儲存所有的配置檔案(這裡讀取鍵值對,用fgets()函式比較合適,因為一行正好乙個鍵值對)
while (!feof(fpwr));
//讀取檔案
fgets(buf, 100
, fpwr);
//分配每個鍵值對記憶體儲存空間
char *ptemp = (char *)malloc(sizeof(char)*((int)strlen(buf) + 1
));
//拷貝字串(buf定義在棧裡,出了該函式會自動釋放)
strcpy(ptemp, buf);//
strcpy()把從src位址開始且含有'\0'結束符的字串複製到以dest開始的位址空間。
//把字串掛到指標陣列上
bufarr[index++] =ptemp;
//為指標陣列再次分配記憶體空間
bufarr = (char **)realloc(bufarr, sizeof(char *)*(index + 1
)); }
//為指標陣列最後乙個元素賦值null
bufarr[index] =null;
//開始查詢對應鍵值對
int a = 0
;
char *strindex =null;
while (bufarr[a] !=null)
//開始匹配字串
while (pkey[b] != '\0'
) }
break
; }
if (strindex !=null)
;sprintf(newbuf,
"%s=%s\r\n
", pkey, pvalue);
//開闢新的字串記憶體空間
char *pnewstr = (char *)malloc(sizeof(char)*((int)strlen(newbuf) + 1
));
//複製字串
strcpy(pnewstr, newbuf);
bufarr[a] =pnewstr;
}break
; }
a++;
}//沒有找到對應的鍵
if (strindex ==null)
;sprintf(newbuf,
"%s=%s\r\n
", pkey, pvalue);
//開闢新的字串記憶體空間
char *pnewstr = (char *)malloc(sizeof(char)*((int)strlen(newbuf) + 1
));
//拷貝字串
strcpy(pnewstr, newbuf);
bufarr[index] =pnewstr;
bufarr[index + 1] =null;
}int index2 = 0
;
//關閉檔案指標
if (fpwr !=null)
//為什麼這裡我會重新開啟檔案呢
//因為fopen()操作了檔案指標fpwr,現在檔案指標指向了檔案末尾,(檔案指標不同檔案內部的位置指標,即fpwr(檔案指標),(檔案位置指標)fpwr->_ptr)
//如果不關閉檔案指標fpwr,那麼寫檔案就會從檔案末尾開始寫,導致資料的追加
//但是也有別的辦法
//就是使用rewind(fpwr)方法
//函式名: rewind()
//功 能 : 將檔案內部的位置指標重新指向乙個流(資料流 / 檔案)的開頭
//注意:不是檔案指標而是檔案內部的位置指標,隨著對檔案的讀寫檔案的位置指標(指向當前讀寫位元組)向後移動。而檔案指標是指向整個檔案,如果不重新賦值檔案指標不會改變。
//開啟新檔案指標
file *pfw = fopen(path, "w"
);
//fflush(fpwr);
//開始寫檔案
while (bufarr[index2] !=null)
//釋放字元指標陣列記憶體
free
(bufarr);
//關閉檔案指標
if (pfw !=null)
return
erro_msg;
}int readfile(const
char *path/*
in*/
)
//定義檔案指標
file *fpr =null;
//開啟檔案
fpr = fopen(path, "r"
);
if (fpr ==null)
while (!feof(fpr));
fgets(buf,
100, fpr);
printf("%s
", buf);
}//關閉檔案指標
if (fpr !=null)
return
erro_msg;
}void testf1(const
char *path/*
in*/
);
char buf2[100] = ;
printf(
"請輸入鍵:\n");
scanf("%s
", buf1);
printf(
"請輸入值:\n");
c語言讀寫配置檔案
include include include define filenm c cfg.ini void trim char strin,char strout 去除字串首位空格 void getvalue char keyandvalue,char key,char value define 定義...
配置檔案的讀寫操作
配置檔案用來記錄登入使用者的設定資訊,使得在下一次登陸時能夠從配置檔案中讀出相應使用者的設定資訊,實現的具體 如下 1 先定義個乙個結構體,使用者所有的資訊字段 typedef struct personinfo personinfo const personinfo stpersoninfo 2 ...
讀寫配置檔案
windows作業系統專門為此提供了6個api函式來對配置設定檔案進行讀 寫 getprivateprofileint 從私有初始化檔案獲取整型數值 getprivateprofilestring 從私有初始化檔案獲取字串型值 getprofileint 從win.ini 獲取整數值 getprof...