#author("2026-01-23T20:32:19+00:00","default:yakumo_murakami","yakumo_murakami")
#author("2026-01-23T20:32:55+00:00","default:yakumo_murakami","yakumo_murakami")
[[C]]

うちは開発系じゃないからCもお遊びにしか使わないの。

そんなわけで、うちのお約束、羽根を回してみます。時計に組み込んでみるね。

- (参考)[[Rubyのコンソールで羽根をクルクル回す]]
- (参考)[[Rubyのコンソールで羽根をクルクル回す>コンソールで羽根をクルクル回す]]
- (参考)[[Pythonで羽根をクルクル回す]]

* コード [#v72f98ad]

 #include <stdio.h>
 #include <time.h>
 
 void main(){
    time_t t;
    time_t t2;
    struct tm tm;
    int hn=0;
    char str[] = "-/|\\";
    while(1){
        t2 = time(NULL);
        if(t != t2){
            t = t2;
            hn++;if(hn>3)hn=0;
            localtime_r(&t, &tm);
            printf("\r%c %02d:%02d:%02d",str[hn],tm.tm_hour, tm.tm_min, tm.tm_sec);
            fflush(stdout);
        }
    }
 }

* Makefile [#me5530fd]

やっぱりコンパイラ言語なら、Makefileは書くわよね。

 OBJ=test
 
 all:
        gcc -o $(OBJ) $(OBJ).c
        strip $(OBJ)

 clean:
        rm $(OBJ)
 

* 実行結果 [#t3d72591]

 / 04:32:01

* コード解説 [#na99d8a6]

** どうやって羽根を回すか? [#wa606a64]

C言語は本来、うちで扱う言語じゃないわ。うちは文字列の扱いが不便な言語はおよびじゃないから。~
とはいえ、コンソールで羽根を回すくらいなら十分。その方法を解説するわ。

まず、文字列を定義する。配列でなく文字列よ。

 char str[] = "-/|\\";

ご存じのようにC言語における文字列は、配列のように一文字ずつたどれる。ただし出力されるのは文字でなく文字コードよ。~
だから printfで表示するときは %s でなく %c で表すわ。%cはわかるわよね?そう

** 時刻表示 [#c49782c2]

いくつか方法を試したけど、time.h についてくる構造体 tm がもっとも簡単だったから利用することにしたわ。

* 総評 [#y72ef156]

思ったより、はるかに少ないコードでさっくり書けたわね。びっくり

トップ   編集 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS