C言語ケーススタディ 時計の作り方1




2014年10月より個人の方を対象に、Study C無料提供を開始しました。
C言語を勉強中の方は、学習・教育に最適なC言語インタープリタのStudy Cを使ってみてください(個人の方は無料です)。
大学・高専・高校などの教育機関での採用実績も多数あるロングセラー商品Study Cが、個人向けに無料提供を始めました。
インタープリタの手軽さに加え、ゲームや3Dタートルグラフィックで楽しく勉強したりと、C言語の学習を強力にサポートします。
ブロック崩しゲーム 3Dツリー クリスマスツリー
また、このようなボタンの用意されているページでは、掲載しているプログラムをStudy Cに直接ロードし実行したりすることができます。
Study Cにロードする Study Cにロードし編集する Study Cにロードし実行する
Study C無料利用についての詳細は、このページを参照してください。



秒単位で日時が更新されるデジタル時計を作成します。
まず、日付/時刻の操作ケーススタディを参考にして現在の日時を表示するプログラムを作成します。 余分な所を削除した以外に表示が固定幅で行われるようにprintfのフォーマットを%2dに変更しました。
#include <stdio.h>
#include <time.h>

main()
{
        static char
                *week[] = {"日", "月", "火", "水", "木", "金", "土"};
        time_t  now;
        struct tm
                *tm_now;

        now = time(NULL);
        tm_now = localtime(&now);
        printf("%4d年%2d月%2d日 %s曜日\n",
                tm_now->tm_year+1900, tm_now->tm_mon+1, tm_now->tm_mday,
                week[tm_now->tm_wday]);
        printf("%2d時%2d分%2d秒\n",
                tm_now->tm_hour, tm_now->tm_min, tm_now->tm_sec);
}
Study Cにロードする Study Cにロードし編集する Study Cにロードし実行する ブラウザとの連携機能が使用可能なStudy Cのバージョンなどについて...
上記のプログラムが表示する日時をループで繰り返し表示するように変更します。 単にループで繰り返すようにしてしまうと1秒間に何回も再表示されてしまいます。 そこで、ループ内で繰り返しtime関数を呼び出し前回表示したときの値(prev変数に格納)と異なったときだけ表示するように変更します。
#include <stdio.h>
#include <time.h>

main()
{
        static char
                *week[] = {"日", "月", "火", "水", "木", "金", "土"};
        time_t  now, prev;
        struct tm
                *tm_now;

        prev = -1;
        for(;;){
                now = time(NULL);
                if(prev == now)
                        continue;
                prev = now;
                tm_now = localtime(&now);
                printf("%4d年%2d月%2d日 %s曜日\n"
                        "%2d時%2d分%2d秒\n",
                        tm_now->tm_year+1900, tm_now->tm_mon+1, tm_now->tm_mday,
                        week[tm_now->tm_wday],
                        tm_now->tm_hour, tm_now->tm_min, tm_now->tm_sec);
        }
}
Study Cにロードする Study Cにロードし編集する Study Cにロードし実行する ブラウザとの連携機能が使用可能なStudy Cのバージョンなどについて...
このプログラムを実行すると1秒ごとに現在の日時を表示します。 このプログラムは終了する機構がないのでCtrl+Cを押すなどして終了させてください。


[an error occurred while processing this directive]