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