如何在C语言中实现计时

如何在C语言中实现计时,第1张

以前做那个停车场管理系统的时候,也是需要计时,因为要收费..好像就这么记得.每个上机的人,应该有一个结构体,在结构体里设个计时的变量,可以是个只有两个元素的数组.当然这样会很不方便了.(因为需要你自己输入上机时间,和下机时间,并保存在变量里.)....ANSIC里有一个time函数樱模物,在time.h头文件里.这个函数,传递一个参数,返回的是系统时间(单位我不清楚),返回的系统时间保存在你传递的参脊液数里...你可以试试这个.貌似这个可能就有点麻烦了.因为需要测试程序...你不可能等个1,2个小时,再看看输出结果是不是对的...测试的时候,乘个数放大一下应该就可以了..也就是说,你设一个结构体,里面有一个记录时间的数组time[2],数组只含两个元素,这两个元素的值,由time函数来获得.(这里获码迅得的是系统时间)..这个结构体里应该还含有的其他元素,应该要包括,电脑标号ID(每个电脑对应一个号码),和一个bool型变量status,来标识是该电脑的状态,已有人上机或者处于空闲状态.status为true(有人使用该机器)时,把系统时间付给time[0],该机器的status变为false(有人下机)后,在把一个系统时间付给time[1].计算时间差和收费额...那些一个小时,半个小时,等等,不同时间的不同收费标准,一般用if,什么的来搞定.

秒表计时器的代码

#include

#include

#include

#include

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("按回车键开始计时!\n")

while(1)

{

m

=

getch()

if(m

!=

‘\r’)

//读入一个输入,如果是回车,那么跳出次循环

printf("输入错误,仅能输入回车键!\n")

else

break

}

printf("已经开始计时,但是你可以按回车键以分段计时!\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("输入错误,仅支持输入回车键或者空格键!\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("\n总时间:%d:%d:%d:%d\n",total.hours,total.minutes,total.seconds,total.hscd)

fprintf(fout,"统计时间:%d:%d:%d:%d\n",total.hours,total.minutes,total.seconds,total.hscd)

fclose(fout)

printf("已经保存到当前目录下的timeout.txt文件中按任意键结束!")

getch()

}

使用time()函数。告陪它在头文件time.h中

具体使用方法如下:

time_t a,b//time_t是表示时间的结构体,你可以在time.h中找到它的原型。

a=time(NULL)//表示获取当前的机器时间。袜禅蠢

代码段

b=time(NULL)//表示获取当前的机器时袭族间。

a是代码段执行前的时间,b是代码段执行后的时间(单位是秒),那么b-a当然是代码段的执行时间了。输出时,以长整型输出时间。

希望这个解答可以帮到你。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12560138.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-26
下一篇 2023-05-26

发表评论

登录后才能评论

评论列表(0条)

保存