ページへ戻る

− Links

 印刷 

GUIGUI01​/memo24 のバックアップソース(No.1) :: OSASK計画

osaskwiki:GUIGUI01/memo24 のバックアップソース(No.1)

  Next »[4]
* ぐいぐい01に関するメモ-24
-(by [[K]], 2009.01.12)
-メモのうち重要な部分をそのうちまとめてまともなページを作る
*** (37) GOで「ぐいぐい01」アプリを作る(2)
-[[GUIGUI01/memo19]]の続きです。仕様変更ももうそんなにはないと思うので、書いても問題はないかなと。
----
-最初のお題は0から9までの数字の表示です。ex0007.cです。
 #include <guigui01.h>

 void G01Main()
 {
     int i;
     for (i = 0; i <= 9; i++) {
        g01_putc('0' + i);
        g01_putc(' ');
     }
     return;
 }
-これだけです。これをmakeすれば72バイトになります。実行すると以下のような表示が得られます。
 0 1 2 3 4 5 6 7 8 9
----
-さてそれではもう少し桁を増やします。でもsprintfは使いたくないので、setdecを作りました。ex0008.cです。
 #include <guigui01.h>

 void setdec(char *s, int i, int n)
 {
     int j;
     for (j = n - 1; j >= 0; j--) {
         s[j] = '0' + (i % 10);
         i /= 10;
     }
     return;
 }

 void G01Main()
 {
     int i;
     char s[5];
     for (i = 0; i <= 999; i++) {
        setdec(s, i, 3);
        s[3] = ' ';
        s[4] = 0; /* 終端に0を入れる */
        g01_putstr0(s);
     }
     return;
 }
-これをmakeすれば146バイトになります。これを実行すると、以下のように表示されます。
 000 001 002 003 004 005 006 007 008 009 010 011 012 013 014 015 016 017 018 019
 020 021 022 023 024 025 026 027 028 029 030 031 032 033 034 035 036 037 038 039
     (中略)
 960 961 962 963 964 965 966 967 968 969 970 971 972 973 974 975 976 977 978 979
 980 981 982 983 984 985 986 987 988 989 990 991 992 993 994 995 996 997 998 999
----
-もしかしたら最初のほうで、0が000になっていたり、1が001になっているのが気にいらないかもしれませんね。じゃあそれを直しましょう。ex0009.cです。
 #include <guigui01.h>

 void setdec(char *s, int i, int n)
 {
     int j;
     for (j = n - 1; j >= 0; j--) {
         s[j] = '0' + (i % 10);
         i /= 10;
     }
     for (j = 0; j < n - 1; j++) {
         if (s[j] != '0')
             break;
         s[j] = ' ';
     }
     return;
 }

 void G01Main()
 {
     int i;
     char s[5];
     for (i = 0; i <= 999; i++) {
        setdec(s, i, 3);
        s[3] = ' ';
        s[4] = 0; /* 終端に0を入れる */
        g01_putstr0(s);
     }
     return;
 }
-これをmakeすれば177バイトになります。これを実行すると、以下のように表示されます。
   0   1   2   3   4   5   6   7   8   9  10  11  12  13  14  15  16  17  18  19
  20  21  22  23  24  25  26  27  28  29  30  31  32  33  34  35  36  37  38  39
     (中略)
 960 961 962 963 964 965 966 967 968 969 970 971 972 973 974 975 976 977 978 979
 980 981 982 983 984 985 986 987 988 989 990 991 992 993 994 995 996 997 998 999
----
-ex0009は桁がそろっていてきれいだと僕は思うのですが、もしかしたら余計なスペースを表示しないほうがお好みかもしれませんね。じゃあそれも直せるようにしてみます。ex0010.cです。
 #include <guigui01.h>

 void setdec(char *s, int i, int n)
 {
     int j;
     for (j = n - 1; j >= 0; j--) {
         s[j] = '0' + (i % 10);
         i /= 10;
     }
     for (j = 0; j < n - 1; j++) {
         if (s[j] != '0')
             break;
         s[j] = ' ';
     }
     return;
 }

 char *skip_space(char *s)
 {
     while (*s == ' ') {  /* while (A) は for (; A;) と同じ意味 */
         s++;
     }
     return s;
 }

 void G01Main()
 {
     int i;
     char s[5];
     for (i = 0; i <= 999; i++) {
        setdec(s, i, 3);
        s[3] = ' ';
        s[4] = 0; /* 終端に0を入れる */
        g01_putstr0(skip_space(s));
     }
     return;
 }
-これをmakeすれば?バイトになります。これを実行すると、以下のように表示されます。
* こめんと欄

#comment

  Next »[4]