Re: [問題] linux C/C++ 讀設定檔
※ 引述《mself (mself)》之銘言:
: 開發平台(Platform): (Ex: VC++, Gcc, Linux, ...)
: Linux
: 問題(Question):
: 想請問如何用 C/C++ 讀取一個設定檔
: 餵入的資料(Input):
: 設定檔是一個文字檔,內容是字串跟設定值,例如:
: height 5
: width 10
: lenght 30
: ...
基本上這問題和什麼平台似乎沒有太大關係,
你的需求似乎只是要從設定檔裡面讀出參數值而已,
於是重點應在於當初設定檔的規範是怎麼寫的,
不同的規範方式就有不同的讀取方式,
而您的方法的確是簡單、常用的方法,
(我的話是改成 !stricmp("height", str), 不分大小寫)
我另外提出三方法如下說明
1. height = 5
這種方法處理前要先把空白全吃掉,
每次都要用 strtok 方式去抓 "=",
比對 "=" 前面的字串是要給哪個變數。
2. 直接寫入定義欄位
早期的單機遊戲不少是用這種方式,
直接寫入 binary 值,
所以看到很多遊戲破解都會跟你說
00h~04h:血量
05h~06h:等級
這種方式是直接定義好欄位,寫入 binary ,
不過相對的,佔用欄位(byte 數)要事先設定好,
太多就浪費;太少就容易溢位。
3. ini 讀取
這點我不知道 C/C++ 有沒有直接支援 ini 讀取
不過 AutoIt(用VC寫的)裡面有
IniReadSection、IniReadSectionName、IniWriteSection
到時寫入和讀取都非常方便,
可以考慮它的做法,自己寫一個 Class 出來去讀。
至於您提及有沒有更方便的方式?
那可以那些欄位識別字全都省掉
5
2
1
fscanf(fp, "%d %d %d", &h, &w, &num);
只是我想這種方式您也不滿意就是了,
如果設定檔的目的是要給其它使用者易讀、易寫的話,
這種方式就不適用。
--
YouLoveMe() ? LetItBe() : LetMeFree();
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 180.177.76.142
推
12/24 22:44, , 1F
12/24 22:44, 1F
推
12/24 23:08, , 2F
12/24 23:08, 2F
→
12/24 23:08, , 3F
12/24 23:08, 3F
推
12/24 23:14, , 4F
12/24 23:14, 4F
→
12/24 23:18, , 5F
12/24 23:18, 5F
→
12/24 23:19, , 6F
12/24 23:19, 6F
推
12/24 23:55, , 7F
12/24 23:55, 7F
→
12/25 00:05, , 8F
12/25 00:05, 8F
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 2 之 3 篇):