(動作保証なし.サポート対象外.)
経過時間を細かく調べたい場合, 関数 gettimeofday() を使えばよいだろう. 使用例として,ストップウォッチを作ってみた:
#include <ncurses.h>
#include <sys/time.h>
double Time()
{
static struct timeval tv;
gettimeofday(&tv, NULL);
// 構造体変数 tv に現在時刻の情報をμ 秒単位で取得.
// メンバ変数 int tv_sec には秒の成分,
// int tv.tv_usec にはμ秒の成分が入る.
return ((double)tv.tv_sec + (double)tv.tv_usec*1.0e-06);
// 2つの成分を1つの実数値にまとめて返す.
// (1.0e-06 は 10の-6乗,つまり μ.)
}
int main(int argc, char **argv)
{
double t0, t;
initscr();
timeout(-1);
printw("Push [Enter] to start.\n");
getch(); // [Enter]キーでスタート
t0 = Time();
printw("Started at %f\n", t0);
printw("Push [Enter] to stop.\n");
getch(); // [Enter]キーでストップ
t = Time();
printw("Stopped at %f\n", t);
printw("Time: %f (sec)\n", t - t0);
getch();
endwin();
return (0);
}