#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] 思ったより、はるかに少ないコードでさっくり書けたわね。びっくり