C語言 檔案操作10 配置檔案讀寫

2021-09-08 01:19:57 字數 3544 閱讀 2071

//

配置檔案讀寫專案

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