我也不知道这个问题该怎么描述,有点像操作系统的任务
假如我有一个数组,希望数组里的每个成员各自记数(也可以说计时吧),然后时间到了设定的数,就对该成员进行相应的操作
不知道怎么实现记数(计时)还望知道的指点一二,在下先谢谢了
哈哈,我10天前好象编写过这样的破程序,想想当初是因为不会中断才写的(现在还是没清楚,自卑中....)
友情提示:你可以用time.h库中的double difftime(time_t time_1,time_t time2); 作用,计算两个时间差~~
还有一个更加烂的方法:就是用循环:
void fun() { static int sign=0; /*循环记数标志*/ sign++; if(sign>60) sign=0; if(sign<=30){程序块1} else{程序块2} }
用sign做标记,当sign<=30的时候,执行程序块1;如果>30就执行程序块2;最后当sign到达设置的上限60后,自动清0
怎么样?够烂的吧
用中断吧。时钟中断号为0x1c,简单写一个例子,写完睡觉。
#include<stdio.h> #include<graphics.h> #include<dos.h>
int time=5,i;
void interrupt (*oldhandle)(); /*旧的中断*/ void stopisr() /*返回到旧的中断处理程序,不要忘记这步工作!*/ { setvect(0x1c,oldhandle); } void interrupt myhandle() /*新的时钟中断处理程序*/ { disable(); i++; if(i>18) { time--; i=0; if(time==0) { circle(320,240,50); setfillstyle(1,RED); floodfill(320,240,WHITE); stopisr(); /*别忘了返回旧中断处理*/ } } enable(); } main() { int gd=DETECT,gm; initgraph(&gd,&gm,""); setbkcolor(BLUE); oldhandle=getvect(0x1c); /*保存旧中断*/ setvect(0x1c,myhandle); /*安装新中断*/ outtextxy(1,1,"5"); outtextxy(1,25,"The programme will draw a circle after five seconds."); outtextxy(300,400,"You can Press any key to quit."); while(!kbhit()) { switch(time) { case 4:outtextxy(10,2,"4");break; case 3:outtextxy(20,2,"3");break; case 2:outtextxy(30,2,"2");break; case 1:outtextxy(40,2,"1");break; case 0:outtextxy(50,2,"0");break; } } stopisr();/* :o) */ }
写完检查一遍发现不妥,又在最后加了一句stopisr(),唉。