#include <guigui01.h> /* これは関数の外で宣言するのが望ましい */ unsigned char cmdusage[] = { 0x86, 0x55, /* この2つは決まり文句なのでとりあえず変更しない */ 0x0c, 0, 'n', 0x1c, 1, '#', /* この説明は本文で */ 0x40 /* 最後のこれも決まり文句なので変更しない */ }; void setdec(char *s, int i, int n) { (ex0010.cと同じ内容) } char *skip_space(char *s) { (ex0010.cと同じ内容) } void G01Main() { int i, j = 0, n; char s[11]; g01_setcmdlin(cmdusage); /* コマンドラインの使い方をシステムに教える */ n = g01_getcmdlin_int_s(0); /* 本文参照 */ for (i = 0; i <= n; i++) { j += i; } setdec(s, j, 10); s[10] = 0; g01_putstr0(skip_space(s)); return; }
>efg01 ex0012.g01 usage>ex0012.g01 n:#
>efg01 ex0012.g01 n:100 5050 >efg01 ex0012.g01 n:1000 500500
0x0c, 0, 'n', 0x1c, 1, '#', /* この説明は本文で */
0x0c, (引数名の文字数-1), (引数名), 0x1c, (説明部分の文字数), (説明)
0x0c, 2, 'n', 'u', 'm', 0x1c, 6, 'n', 'u', 'm', 'b', 'e', 'r',
>efg01 ex0012.g01 n:100*10
#include <guigui01.h> unsigned char cmdusage[] = { 0x86, 0x55, 0x0c, 0, 'i', 0x1c, 1, '#', 0x0c, 0, 'n', 0x1c, 1, '#', 0x40 }; void setdec(char *s, int i, int n) { (ex0010.cと同じ内容) } char *skip_space(char *s) { (ex0010.cと同じ内容) } void G01Main() { int i, j = 0, n; char s[11]; g01_setcmdlin(cmdusage); n = g01_getcmdlin_int_s(1); for (i = g01_getcmdlin_int_s(0); i <= n; i++) { j += i; } setdec(s, j, 10); s[10] = 0; g01_putstr0(skip_space(s)); return; }
>efg01 ex0013.g01 i:3 n:5 12
>efg01 ex0013.g01 n:5 i:3 12
#include <guigui01.h> unsigned char cmdusage[] = { 0x86, 0x55, 0x1c, 0, 'i', 0x1c, 1, '#', /* 最初が0x0cから0x1cに変わったのに注目! */ 0x1c, 0, 'n', 0x1c, 1, '#', /* 最初が0x0cから0x1cに変わったのに注目! */ 0x40 }; void setdec(char *s, int i, int n) { (ex0010.cと同じ内容) } char *skip_space(char *s) { (ex0010.cと同じ内容) } void G01Main() { int i, j = 0, n; char s[11]; g01_setcmdlin(cmdusage); n = g01_getcmdlin_int_o(1, 100); for (i = g01_getcmdlin_int_o(0, 0); i <= n; i++) { j += i; } setdec(s, j, 10); s[10] = 0; g01_putstr0(skip_space(s)); return; }
>efg01 ex0014.g01 5050 >efg01 ex0014.g01 n:1000 500500 >efg01 ex0014.g01 i:98 297
#include <guigui01.h> unsigned char cmdusage[] = { 0x86, 0x55, 0x0c, 0, 's', 0x3c, 3, 's', 't', 'r', /* 0x3cは文字列型引数 */ 0x1c, 0, 'n', 0x1c, 1, '#', 0x40 }; void G01Main() { int i, n; char s[16]; g01_setcmdlin(cmdusage); g01_getcmdlin_str_s0(0, 16, s); /* sに受け取る、最大16バイトまで、末尾に0が入る */ n = g01_getcmdlin_int_o(1, 10); for (i = 0; i < n; i++) { g01_putstr0(s); } return; }
>efg01 ex0015.g01 usage>ex0015.g01 s:str [n:#]
>efg01 ex0015.g01 s:abc abcabcabcabcabcabcabcabcabcabc >efg01 ex0015.g01 s:12 n:3 121212 >efg01 ex0015.g01 s:1+2 n:1+2 1+21+21+2
>efg01 ex0015.g01 s:1234567890123456 Too long Command line ("1234567890123456" max:16)
#include <guigui01.h> unsigned char cmdusage[] = { 0x86, 0x5c, 0, /* ここが変わった! */ 0x0c, 0, 's', 0x3c, 3, 's', 't', 'r', 0x1c, 0, 'n', 0x1c, 1, '#', 0x40 }; void G01Main() { (ex0015.cと同じ内容) }
>efg01 ex0016.g01 usage>ex0016.g01 [s:]str [[n:]#]
>efg01 ex0016.g01 abc 4 abcabcabcabc