初学者简单C++问题!

2025-04-02 17:46:57
推荐回答(2个)
回答1:

#include
#include
#include
#include
#include
using namespace std;

int main(void)
{
string ShutdownTime;
char FinalCommmand[50]="shutdown -s -f -t ";
char CommandLine[50];
int JieGuo;
int ShYSJian;

int JianCeShuRu(string ShutdownTimeX);//检测当前输入
string SystemTime(void);//当前系统时间
int ShengYuShiJian(string ShutdownTimeX,string SystemTimeX);//剩余时间
void command(char *FinalCommandX,char CommadLineX[],int ShengYuShiJianX);

cout<<"专用关机程序!"< cout<<"希望关机时间,格式hh:mm(24小时时间制表示),例如:12:29,07:25等等"< <<"不要输入错了!"< cin>>ShutdownTime;
if((JieGuo=JianCeShuRu(ShutdownTime))!=0){
cout<<"叫你TM不要输错了,还输错!"< < return -1;
}

cout< cout< ShYSJian=ShengYuShiJian(ShutdownTime,SystemTime());
cout<
command(FinalCommmand,CommandLine,ShYSJian);
cout<
return 0;
}

int JianCeShuRu(string ShutdownTimeX){
if(ShutdownTimeX.size()!=5){
return -1;
}
if('0'<=ShutdownTimeX[0]&&'2'>=ShutdownTimeX[0]){
if(!('0'<=ShutdownTimeX[1]&&'9'>=ShutdownTimeX[1])){
return -2;
}
if('2'==ShutdownTimeX[0]){
if(!('0'<=ShutdownTimeX[1]&&'4'>=ShutdownTimeX[1])){
return -3;
}
}
}
else{
return -4;
}
if(':'!=ShutdownTimeX[2]){
return -5;
}
if('0'<=ShutdownTimeX[3]&&'6'>=ShutdownTimeX[3]&&'0'<=ShutdownTimeX[4]&&'9'>=ShutdownTimeX[4]){
if('6'==ShutdownTimeX[3]){
if('0'!=ShutdownTimeX[4]){
return -6;
}
}
}
else{
return -7;
}
return 0;
}

string SystemTime(void){
struct tm *lt;
long now;
time(&now);
lt = localtime(&now);
string SystemTimeX;
char syscstring[5]="";
syscstring[0]=lt->tm_hour/10+48;
syscstring[1]=lt->tm_hour%10+48;
syscstring[2]=':';
syscstring[3]=lt->tm_min/10+48;
syscstring[4]=lt->tm_min%10+48;
SystemTimeX.assign(syscstring,5);
return SystemTimeX;
}
int ShengYuShiJian(string ShutdownTimeX,string SystemTimeX){
int aTime=((ShutdownTimeX[0]-48)*10+(ShutdownTimeX[1]-48))*3600+((ShutdownTimeX[3]-48)*10+(ShutdownTimeX[4]-48))*60;
int bTime=((SystemTimeX[0]-48)*10+(SystemTimeX[1]-48))*3600+((SystemTimeX[3]-48)*10+(SystemTimeX[4]-48))*60;
return aTime-bTime;
}

void command(char *FinalCommandX,char CommadLineX[],int ShengYuShiJianX){
gcvt(ShengYuShiJianX,int(log10(double(ShengYuShiJianX)))+1,CommadLineX);
strcat(FinalCommandX,CommadLineX);
}
已经修改好了,可以运行。
看你的程序的意思,是想实现定时关机的命令,
输入一个时间,转换成dos命令
shutdown -s -f -t +时间(秒为单位)
不过输入的时间要在当前的时间的后面
例如现在
22:00
你输入
22:10
就可以。
要定时关键,系统调用下shutdown命令就可以了,入还有问题可以hi我。
我空间中写过一个小程序,定时关机的。
http://hi.baidu.com/huifeng00/blog/item/977dd6537d0c9e838d54300c.html

回答2:

支持huifeng00
不过我感觉你这串代码怎么没调用shutdown关机命令,只是计算了一下时间。我查了一下shutdown命令的参数,好像它只能在600秒以内执行定时关机。