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] 好用的小工具: AutoHotKey

做為一個 Linux 的愛好者,轉移到 Windows 上面的時候,往往難以適應 Windows 調整快捷鍵的方式,所以 google 了一下,結果發現很多人愛用的 "Auto Hot key"。不多說,就來給一個範例說明如何使用 Auto Hot key 來...