C 讀寫INI檔案

2021-10-24 01:15:36 字數 3626 閱讀 9357

ini是英文單詞 initialization 的縮寫,常作為windows系統下的配置檔案。ini檔案是文字檔案,通常用於程式啟動時初始化系統配置。

ini檔案由節組成,每個節由鍵和鍵值組成如下:

[section1]

sec1_key1=sec1_val1

sec1_key2=sec1_val2

…[section2]

sec2_key1=sec2_val1

sec2_key2=sec2_val2……

[sectionn]

secn_key1=secn_val1

secn_key2=secn_val2

…其中section是節,每個節中有對應的鍵和值,不同節中的鍵名可以重複,相同節中不能重複。

每乙個鍵值對佔一行,以英文分號』;'開頭至行尾的部分被認為是注釋內容

writeprivateprofilestring 把給定的鍵名及其值寫入到指定ini檔案的相應塊中。

writeprivateprofilesection 替換ini檔案中指定塊中所有鍵名對應的值。

writeprivateprofilestruct 把指定的鍵名及其資料寫入到指定ini檔案的塊中。

writeprivateprofilestring

(// 指向包含 section 名稱的字串位址

lpctstr lpkeyname,

// 指向包含 key 名稱的字串位址

lpctstr lpstring // 要寫的字串位址

lpctstr lpfilename // ini 檔案的檔名);

writeprivateprofilestring

("section1"

,"sec1_key1"

,"new value"

,"d:\\1.ini"

);

writeprivateprofilesection

(// 指向包含 section 名稱的字串位址

lpctstr lpstring // 要寫入的資料的位址

lpctstr lpfilename // ini 檔案的檔名);

writeprivateprofilestring

("section1"

,"sec1_key1=new value1\r\nsec1_key2\r\nnew value2"

,"d:\\1.ini"

);

bool writeprivateprofilestruct

( lpctstr lpszsection,

// pointer to section name

lpctstr lpszkey,

// pointer to key name

lpvoid lpstruct,

// 要寫入的資料緩衝區

uint usizestruct,

// 緩衝區的大小

lpctstr szfile // pointer to initialization filename);

//把乙個結構體的記憶體當做鍵值寫入檔案,從這一點上來看,他可以把任何乙個記憶體塊寫入ini檔案**

struct person

int eyes;

int mouth;

double tall ;};

person he;

writeprivateprofilestruct

("sec10"

,"per"

,&he,

sizeof

(person)

,"d:\\1.ini");

person he1;

getprivateprofilestruct

("sec10"

,"per"

,&he1,

sizeof

(person)

,"d:\\1.ini"

);

檔案中如下:

[sec10]

per=ccccccccccccccccccccccccccccccccc0

注意:

1、檔案路徑要是絕對路徑不能是相對路徑,相對路徑預設是c:\windows

2、不管是檔案節名還是鍵名都遵循有就修改沒有就建立的原則,且不區分大小寫

getprivateprofilesection 讀取ini檔案指定塊中的所有鍵名及其對應值。

getprivateprofilesectionnames 讀取一ini檔案中所有的塊名。

getprivateprofileint 讀取ini檔案指定塊中的鍵名對應的整數值。

getprivateprofilestring 讀取ini檔案指定塊中的鍵名對應的字串。

getprivateprofilestruct 讀取ini檔案指定塊中的鍵名對應的資料

getprivateprofileint

(// 指向包含 section 名稱的字串位址

lpctstr lpkeyname,

// 指向包含 key 名稱的字串位址

int ndefault // 如果 key 值沒有找到,則返回預設的值是多少

lpctstr lpfilename // ini 檔案的檔名);

中間引數和返回值的定義和 getprofileint 是一樣的。

getprivateprofilestring - 從 ini 檔案的某個 section 取得乙個 key 的字串,它的原形是:

getprivateprofilestring

(// 指向包含 section 名稱的字串位址

lpctstr lpkeyname,

// 指向包含 key 名稱的字串位址

lpctstr lpdefault,

// 如果 key 值沒有找到,則返回預設的字串的位址

lptstr lpreturnedstring,

// 返回字串的緩衝區位址

dword nsize // 緩衝區的長度

lpctstr lpfilename // ini 檔案的檔名);

getprivateprofilesection - 從 ini 檔案中讀出整個 section 的內容,它的原形是:

getprivateprofilesection

(// 指向包含 section 名稱的字串位址

lptstr lpreturnedstring,

// 返回資料的緩衝區位址

dword nsize // 返回資料的緩衝區長度

lpctstr lpfilename // ini 檔案的檔名

);

注意:

1、返回讀取是有預設值

2、getprivateprofileint 讀取的int如果是負數,則返回0因為該函式返回乙個uint

3、不管是檔案不存在,節名不存在或者鍵名不存在都返回預設值

4、讀取section時行之間會以\0(accii 0)作為分隔符,寫入的時候是\r\n,所以在顯示的時候會只顯示\0之前的,看著好像唯讀了一行,使用索引就沒有問題了

5、get函式是不會建立檔案,節名,鍵名的

C 讀寫INI檔案

inifile類 using system using system.io using system.runtime.interopservices 因為我們需要呼叫api函式,所以必須建立system.runtime.interopservices命名空間以提供可用於訪問 net 中的 com 物...

C 讀寫INI檔案

using system using system.drawing using system.collections using system.componentmodel using system.windows.forms using system.io using system.runtime...

C 讀寫ini檔案

using system.text using system.runtime.interopservices dllimport kernel32 private static extern long writeprivateprofilestring string section,string k...