4: 2009-01-13 (火) 12:42:05 [6] | 5: 2009-01-13 (火) 20:11:00 [7] | ||
---|---|---|---|
Line 72: | Line 72: | ||
[[num:]number] | [[num:]number] | ||
---- | ---- | ||
- | -さてここまでで整数型引数と文字列型引数を紹介してきましたが、次はフラグ型引数を紹介します。これは値を指定するのではなく、単にその引数名が現れたかどうかだけを問題にします。・・・どんな例にしましょうか。じゃあたとえばiからnまで数えるプログラムを使いましょう。 | + | -さてここまでで整数型引数と文字列型引数を紹介してきましたが、次はフラグ型引数を紹介します。これは値を指定するのではなく、単にその引数名が現れたかどうかだけを問題にします。・・・どんな例にしましょうか。じゃあたとえば0からnまで数えるプログラムを使いましょう。ex0020.cです。 |
+ | #include <guigui01.h> | ||
- | -(書き途中) | + | unsigned char cmdusage[] = { |
- | //-(フラグ型) | + | 0x86, 0x51, /* フラグ型は自動当てはめ対象からははずすようにする */ |
- | //-複数指定 | + | 0x13, 'd', 'o', 'w', 'n', 0x20, |
- | //-(ファイル例はtypeコマンド) | + | /* フラグ型は当然省略可能に。そしてフラグ型には説明を付けない。 */ |
+ | 0x00, 'n', 0x11, '#', | ||
+ | 0x40 | ||
+ | }; | ||
+ | |||
+ | void setdec(char *s, int i, int n) | ||
+ | { | ||
+ | (ex0010.cと同じ内容) | ||
+ | } | ||
+ | |||
+ | void G01Main() | ||
+ | { | ||
+ | int i, n; | ||
+ | char s[4]; | ||
+ | g01_setcmdlin(cmdusage); | ||
+ | n = g01_getcmdlin_int_s(1); | ||
+ | if (g01_getcmdlin_flag_o(0) == 0) { | ||
+ | /* down指定がない場合 */ | ||
+ | for (i = 0; i <= n; i++) { | ||
+ | setdec(s, i, 3); | ||
+ | s[3] = 0; | ||
+ | g01_putstr0(s); | ||
+ | } | ||
+ | } else { | ||
+ | /* down指定がある場合 */ | ||
+ | for (i = n; i >= 0; i--) { | ||
+ | setdec(s, i, 3); | ||
+ | s[3] = 0; | ||
+ | g01_putstr0(s); | ||
+ | } | ||
+ | } | ||
+ | return; | ||
+ | } | ||
+ | -これをmakeすると265バイトになります。そしてusageを出してみると、こうなります。 | ||
+ | >efg01 ex0020.g01 | ||
+ | usage>ex0020.g01 [down] [n:]# | ||
+ | -適当に実行してみるとこんな感じです。 | ||
+ | >efg01 ex0020.g01 10 | ||
+ | 0 1 2 3 4 5 6 7 8 9 10 | ||
+ | |||
+ | >efg01 ex0020.g01 7 down | ||
+ | 7 6 5 4 3 2 1 0 | ||
+ | -プログラムから推測できるように、 0x2c がフラグ型になります。しかしフラグ型では説明は付けないので、 0x20 を使うことになります。フラグ型を指定するときは、「down:」のように末尾に「:」があっても構いません。 | ||
+ | >efg01 ex0020.g01 7 down: | ||
+ | 7 6 5 4 3 2 1 0 | ||
+ | -フラグがコマンドライン中に存在していれば、g01_getcmdlin_flag_o()の値が0以外になります。存在しなければ0です。 | ||
* こめんと欄 | * こめんと欄 |
(This host) = http://osask.net