时间函数以秒计时c语言 c 计时函数

c语言如何计时

C语言中提供了许多库函数来实现计时功能

按需定制制作可以根据自己的需求进行定制,成都网站建设、网站制作构思过程中功能建设理应排到主要部位公司成都网站建设、网站制作的运用实际效果公司网站制作网站建立与制做的实际意义

下面介绍一些常用的计时函数

1. time()

头文件:time.h

函数原型:time_t time(time_t * timer)

功能:返回以格林尼治时间(GMT)为标准,从1970年1月1日00:00:00到现在的时此刻所经过的秒数

用time()函数结合其他函数(如:localtime、gmtime、asctime、ctime)可以获得当前系统时间或是标准时间。

用difftime函数可以计算两个time_t类型的时间的差值,可以用于计时。用difftime(t2,t1)要比t2-t1更准确,因为C标准中并没有规定time_t的单位一定是秒,而difftime会根据机器进行转换,更可靠。

说明:C标准库中的函数,可移植性最好,性能也很稳定,但精度太低,只能精确到秒,对于一般的事件计时还算够用,而对运算时间的计时就明显不够用了。

2. clock()

头文件:time.h

函数原型:clock_t clock(void);

功能:该函数返回值是硬件滴答数,要换算成秒,需要除以CLK_TCK或者 CLK_TCKCLOCKS_PER_SEC。比如,在VC++6.0下,这两个量的值都是1000。

说明:可以精确到毫秒,适合一般场合的使用。

3. timeGetTime()

头文件:Mmsystem.h  引用库: Winmm.lib

函数原型:DWORD timeGetTime(VOID);

功能:返回系统时间,以毫秒为单位。系统时间是从系统启动到调用函数时所经过的毫秒数。注意,这个值是32位的,会在0到2^32之间循环,约49.71天。

说明:该函数的时间精度是五毫秒或更大一些,这取决于机器的性能。可用timeBeginPeriod和timeEndPeriod函数提高timeGetTime函数的精度。如果使用了,连续调用timeGetTime函数,一系列返回值的差异由timeBeginPeriod和timeEndPeriod决定。

4. GetTickCount()

头文件:windows.h

函数原型:DWORD WINAPI GetTickCount(void);

功能:返回自设备启动后的毫秒数(不含系统暂停时间)。

说明:精确到毫秒。对于一般的实时控制,使用GetTickCount()函数就可以满足精度要求。

5. QueryPerformanceCounter()、QueryPerformanceFrequency()

头文件:windows.h

函数原型:BOOLQueryPerformanceCounter(LARGE_INTEGER *lpPerformanceCount);

BOOLQueryPerformanceFrequency(LARGE_INTEGER *lpFrequency);

功能:前者获得的是CPU从开机以来执行的时钟周期数。后者用于获得你的机器一秒钟执行多少次,就是你的时钟周期。

补充:LARGE_INTEGER既可以是一个8字节长的整型数,也可以是两个4字节长的整型数的联合结构, 其具体用法根据编译器是否支持64位而定:

在进行定时之前,先调用QueryPerformanceFrequency()函数获得机器内部定时器的时钟频率,然后在需要严格定时的事件发生之前和发生之后分别调用QueryPerformanceCounter()函数,利用两次获得的计数之差及时钟频率,计算出事件经历的精确时间。

说明:这种方法的定时误差不超过1微秒,精度与CPU等机器配置有关,一般认为精度为透微秒级。在Windows平台下进行高精度计时的时候可以考虑这种方法。

6. gettimeofday()

Linux C函数。

头文件:sys/time.h

函数原型:int gettimeofday(struct timeval *tv,struct timezone *tz);

说明:其参数tv是保存获取时间结果的结构体,参数tz用于保存时区结果(若不使用则传入NULL即可)。

timeval的定义为:

struct timeval {  

long tv_sec; // 秒数

long tv_usec; //微秒数

}

可见该函数可用于在linux中获得微秒精度的时间。

说明:使用这种方式计时,精度可达微秒。经验证,在arm+linux的环境下此函数仍可使用。

C语言中time(0)的意思是?

time是C语言获取当前系统时间的函数,以秒作单位,代表当前时间自Unix标准时间戳(1970年1月1日0点0分0秒,GMT)经过了多少秒。

形式为time_t time(time_t * t);

该函数提供两种返回方式,返回值,和指针参数。

可以根据需要选择。当参数t为空指针(NULL)时,只返回值。

而NULL的定义是(void *) 0, 所以time(0)也就是time(NULL)的另一种写法,表示只通过返回值获取时间值。

扩展资料:

time函数

函数名称: localtime

函数原型: struct tm *localtime(const time_t *timer)

函数功能: 返回一个以tm结构表达的机器时间信息

函数返回: 以tm结构表达的时间,结构tm定义如下:

#ifndef _TM_DEFINED

struct tm {

int tm_sec; /* 秒 – 取值区间为[0,59] */

int tm_min; /* 分 - 取值区间为[0,59] */

int tm_hour; /* 时 - 取值区间为[0,23] */

int tm_mday; /* 一个月中的日期 - 取值区间为[1,31] */

int tm_mon; /* 月份(从一月开始,0代表一月) - 取值区间为[0,11] */

int tm_year; /* 年份,其值等于实际年份减去1900 */

int tm_wday; /* 星期 – 取值区间为[0,6],其中0代表星期天,1代表星期一,以此类推 */

int tm_yday; /* 从每年的1月1日开始的天数 – 取值区间为[0,365],其中0代表1月1日,1代表1月2日,以此类推 */

int tm_isdst; /* 夏令时标识符,实行夏令时的时候,tm_isdst为正。不实行夏令时的进候,tm_isdst为0;不了解情况时,tm_isdst()为负。*/

};

#define _TM_DEFINED

#endif

参数说明: timer-使用time()函数获得的机器时间

参考资料来源:百度百科-time.h

C语言中如何编写以秒为单位的计时函数?求代码

// 使用 windows 的延时函数 Sleep(); 实现

// 以下代码实现每秒钟输出一个数字,连续输出 10 个

#include windows.h

#include stdio.h

// 主函数

void main()

{

int i = 0;

while(i  10)

{

printf("%d\n", i++);

Sleep(1000);

}

}

还可以使用多媒体定时器实现精确延时,详细请百度《精确延时的实现》

秒表计时程序要求(需要用C语言实现)

这里的分段计时,我使用空格键实现的,F2比较麻烦。程序开始,输入回车开始计时,中途输入空格可以开始新的计时,最后输入回车完成计时。

文件存在程序目录下的timeout.txt

真麻烦,下次这种求助才给10分,绝对不做。。。

//////////////////////////

我的代码就是在VS2010下写的。。。怎么会无法编译。。。你要建一个空工程,然后加入C++源文件。

/////////////////////////////

请新建一个空工程,不要新建Win32 Console那个工程!

#include stdio.h

#include conio.h

#include windows.h

#include stdlib.h

struct tm     //定义时间结构体,包括时分秒和10毫秒

{

int hours,minutes,seconds;

int hscd;

}time,tmp,total;    //time用以计时显示,tmp用以存储上一阶段时间,total记总时间

int cnt;

FILE* fout;

//每次调用update函数,相当于时间过了10ms

void update(struct tm *t)

{

(*t).hscd++;    //10ms单位时间加1

cnt++;

if ((*t).hscd==100)   //计时满1s,进位

{

(*t).hscd=0;

(*t).seconds++;

}

if ((*t).seconds==60)   //计时满一分,进位

{

(*t).seconds=0;

(*t).minutes++;

}

if ((*t).minutes==60)        //计时满一小时,进位

{

(*t).minutes=0;

(*t).hours++;

}

if((*t).hours==24) (*t).hours=0;

//delay();

Sleep(10);  //Sleep是windows提供的函数,作用是暂停程序,单位毫秒,所以此处暂停10ms

}

void display(struct tm *t)

{

//此处输出计时结果,\r为回车不换行,既一直在同一行更新时间

printf("%d:",(*t).hours);

printf("%d:",(*t).minutes);

printf("%d:",(*t).seconds);

printf("%d\r",(*t).hscd);

//printf("Now, press 'e' key to stop the clock...");

}

void time_init()  //初始化时间

{

time.hours=time.minutes=time.seconds=time.hscd=0;

}

void get_total()   //计算总时间

{

total.hscd = cnt % 100;

cnt /= 100;

total.seconds = cnt % 60;

cnt /= 60;

total.minutes = cnt % 60;

cnt /= 60;

total.hours = cnt;

}

int main()

{

char m;

time_init();

cnt = 0;

fout =  fopen("timeout.txt","w");

printf("Now, press Enter key to begin the clock...\n");

while(1)

{

m = getch();

if(m != '\r')     //读入一个输入,如果是回车,那么跳出次循环

printf("Input Error!\n");

else

break;

}

printf("While counting, you can press space to start a new time counter!\n");

while(1)

{

if(kbhit())    //此处检查是否有键盘输入

{

m=getch();

if(m == '\r')     //如果等于回车,那么计时结束,跳出循环

break;

else if(m == ' ')  //如果等于空格,显示此次计时,初始化计时器

{

tmp = time;      //记录上一段计时器结果

fprintf(fout,"%d:%d:%d:%d\n",tmp.hours,tmp.minutes,tmp.seconds,tmp.hscd); //写入文件

time_init();

printf("\n");

}

else

{

printf("Input Error!\n");

}

}

update(time);     //更新计时器

display(time);    //显示计时器时间

}

tmp = time;       //输出最后一次即使结果,写入文件

fprintf(fout,"%d:%d:%d:%d\n",tmp.hours,tmp.minutes,tmp.seconds,tmp.hscd);

get_total();      //计算总的时间,显示,并写入文件

printf("\ntotal time:%d:%d:%d:%d\n",total.hours,total.minutes,total.seconds,total.hscd);

fprintf(fout,"total time:%d:%d:%d:%d\n",total.hours,total.minutes,total.seconds,total.hscd);

fclose(fout);

getch();

}


文章题目:时间函数以秒计时c语言 c 计时函数
标题路径:http://cdiso.cn/article/ddocoio.html

其他资讯