clock()无法正常工作

时间:2016-03-18 18:10:39

标签: c datetime clock

我的代码如下所示:

#include <time.h>
#include <stdio.h>
#include <unistd.h>

int main(void) {
    time_t loop_begin, loop_end, scanf_begin, scanf_end;
    double loop_time, scanf_time;
    int q;


    loop_begin = clock();
    //some big loop
    loop_end = clock();

    loop_time = (double)(loop_end - loop_begin) / CLOCKS_PER_SEC;
    printf("%.6f\n", loop_time);


    scanf_begin = clock();
    printf("qwe> ");scanf("%d", &q);
    scanf_end = clock();

    scanf_time = (double)(scanf_end - scanf_begin) / CLOCKS_PER_SEC;
    printf("%.6f\n", scanf_time);

    return 0;
}

但输出是这样的:

20.087593
qwe> 543       
0.000073

我错过了什么或这是正常的吗?如果这是正常的,你会建议什么?

1 个答案:

答案 0 :(得分:2)

clock测量CPU时间。当您的程序等待按键时,它会在系统调用中被阻止,并且不会占用任何处理器时间。

来自Linux程序员手册:

  

命名

     

clock - 确定处理器时间

     

<强>概要

#include <time.h>
clock_t clock(void);
     

<强>描述

     

clock()函数返回程序使用的处理器时间的近似值。

     

返回值

     

返回的值是到目前为止使用的CPU时间clock_t;得到这个号码   秒使用,除以CLOCKS_PER_SEC。如果使用的处理器时间不是   可用或其值无法表示,函数返回值(clock_t) -1.