2007/12/05

[Programming] 快記 C 語言底下做 getopt

問題:
./command -x 1024 -y 768 -t 標題一 -m 訊息內容
像這樣的 command 執行,程式內部如何處理抓取值?

回答:
用 getopt 來做比較快。

最早以前自已都笨笨的還一個一個去比對,不知道有這個工具可以用。
後來才看到人家用這個來做,很方便。

今天想說做個筆記一下,免得下次要用又忘掉。
簡單的說
先 include header file
#include // getopt

定義 long_options
option long_options[] =
{
{"help", 0, 0, 0},
{"xoffset",1,0,0},
{"yoffset",1,0,0},
{"device",1,0,0},
{0, 0, 0, 0}
};


在 main function 裡頭再下:
while (1)
{
ch = getopt_long (argc, argv, "hx:y:d:",long_options, &option_index);
if (ch==-1)
break;
if (ch==0)
ch = option_index;

switch (ch) {
case 0:
case 'h':
default:
usage(progname);
exit(2);
break;

+---- 18 行: case 1:------------------------------------------------------------ }
} // end of while



值得注意的是 long_opions 裡頭是按陣列元素順序,所以 help 在 case 0 底下處理。
在 option_index 裡處理是就用 char 而已,所以留下 'h'。
ch = getopt_long (argc, argv, "hx:y:d:",long_options, &option_index);
這行說的是:
有hxyd四個 char 都可以使用,其中 xyd 後面都有接東西。

就是這麼簡單。

沒有留言:

[Windows] git-bash 底下的工具

因為工作轉到 Windows 平台上的關係,所以很多工具改到 Windows 上面運作,跟著在 TortoiseGit 底下使用 git-bash 來維護自己的專案原始碼。結果就是裝了前面提過的 auto-hotkey 使用熱鍵來提昇自己的平台操作速度; 但除了 hotkey...