自动关机 C语言源代码

#include
#include
#include
#include
#include
long int o,e;
struct t{
int hours,minutes,seconds;
int hscd;
}timez,times;

void update(){ //每次调用update函数,相当于时间过了l0ms
times.hscd++;
if (times.hscd==l00)
{
times.hscd=0;
times.seconds++;
}
if (times.seconds==60)
{
times.seconds=0;
times.minutes++;
}
if (times.minutes==60)

{
times.minutes=0;
times.hours++;
}
if(times.hours==24) times.hours=0;

}

int main()
{
short int i=0;
int n,m,hour,min,sec,kill;
time_t tl;
struct tm *tmptr;
char mark;
reset:
printf("请选择关机模式:l定时 2倒计时\n");
while(!((mark=getch())=='l'||mark=='2'));
if(mark=='l'){
do{
printf("选择了模式l\n请输入关机时间:格式为 时:分:秒\n\t\t\t\t\t\t\tBY Starting\n");
kill=scanf("%d:%d:%d",&timez.hours,&timez.minutes,&timez.seconds);
fflush(stdin);
}while(timez.minutes>59||timez.seconds>59||timez.hours>23||kill!=3);
system("CLS");
printf("模式l:\n将于%d时%d分%d秒关机\n",timez.hours,timez.minutes,timez.seconds);
time(&tl);
tmptr=localtime(&tl);
hour=tmptr->tm_hour;
min=tmptr->tm_min;
sec=tmptr->tm_sec;
if(timez.seconds-sec<0) {timez.seconds+=60;timez.minutes--;}
if(timez.minutes-min<0) {timez.minutes+=60;timez.hours--;}
if(timez.hours-hour<0) {timez.hours+=24;}
n=3600*(timez.hours-hour)+60*(timez.minutes-min)+(timez.seconds-sec);
printf("开始倒计时:\n\t\t\t\t\t\t\tBY Starting\n");
}
else{
do{
printf("选择了模式2\n请输入关机倒计时:格式为 时:分:秒\n\t\t\t\t\t\t\tBY Starting\n");
kill=scanf("%d:%d:%d",&timez.hours,&timez.minutes,&timez.seconds);
fflush(stdin);
}while(timez.minutes>59||timez.seconds>59||kill!=3);
n=3600*timez.hours+60*timez.minutes+timez.seconds;
system("CLS");
printf("模式2:\n开始倒计时:\n\t\t\t\t\t\t\tBY Starting\n");
}
o=0;
timez.hscd=l00;
times.hours=times.minutes=times.seconds=times.hscd=0;
printf("按ESC退出,r键重设时间\n");
while(l){
if(kbhit()){ //此处检查是否有键盘输入
switch(getch()){
case 27:exit(0);
case 'R':;
case 'r':system("CLS");goto reset;
default:printf("错误指令 \n");
}
}
e=clock();
if(o==0) o=e-5;
e=e-o;
_asm{
push EAX
push e
pop i
pop ax
pop EAX
}
Sleep(l0);
o=clock();
update();
m=3600*times.hours+60*times.minutes+times.seconds;
if(n>m)
printf("关机倒计时 %d:%d:%d \r",(n-m)/3600,((n-m)%3600)/60,((n-m)%3600)%60);
else{
printf("关机倒计时 %d:%d:%d \r",0,0,0);
system("shutdown -s -t l");
printf("\n正在关机 ");
// getch();
break;
}
}
}

相关文档
最新文档