C言語でプログラムの実行開始時点からの経過時間を取得するには time.h の clock 関数を使用します.
#include <time.h>
clock_t clock(void);
clock 関数はそのプログラムの実行にだけ関連した処理系定義の時点から,そのプログラムで使用したプロセッサ時間を処理系の最良の近似で返す関数です. 早い話がこの関数を呼び出すと,プログラムの実行開始時点からの経過時間が得られるというわけです.
clock 関数の呼び出しに失敗した場合,この関数は (clock_t)-1 を返します.
経過時間を秒単位で得たい場合は,戻り値を CLOCKS_PRE_SEC マクロの値で割ります.
以下に clock 関数を使用して,プログラム開始時点からの経過時間を取得するサンプルプログラムを示します.
/* header files */
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
/* main */
int main(void) {
clock_t passage;
int i, j;
double sec;
/* 時間稼ぎ */
for ( i = 0; i <= 100000; i++ ) {
for ( j = 0; j <= 10000; j++ );
if ( i % 10000 == 0 ) {
putchar('-');
}
}
/* 経過時間を取得 */
if ( (passage = clock()) == (clock_t)(-1) ) {
fprintf(stderr,"経過時間の取得に失敗しました.\n");
return EXIT_FAILURE;
}
sec = (double)passage / CLOCKS_PER_SEC;
/* 経過時間を秒単位で表示 */
printf("\nプログラム開始から%.2f秒経過しました.\n", sec);
return EXIT_SUCCESS;
}
サンプルプログラムの実行結果は以下のようになります.
----------- プログラム開始から2.47秒経過しました.
※ 結果は実行環境により異なります.
たくさんあるC言語関連の書籍の中でも特に役に立った本です.よかったら参考にしてみてください.
C言語の実践的参考書.少々値段は張りますが初心者を脱しようとしている人は絶対に読むべきです.
文法だけでなく,コーディングスタイルやデバッグなど文字通り「実践的」なことが書かれているので非常にためになります.
オライリーの本は,読みにくい本が多いのですが本書はとても読みやすくオススメです.
ポインタの解説書としては最高の書籍です.
この1冊でポインタを完全に理解することができます.全くの初学者が読むには敷居が高いですが,入門書を読み終えた後に読むと非常に有益です.