C語言 -- 定時關機程序
C語言 -- 定時關機程序
特別注意:
1.從接收到的char * 類型轉換為 int ,一定不能使用(int)這種方式來轉換,要用atoi()
使用方式:原型: int atoi(const char *nptr);
2. 多個字符串合並,使用sprintf()
使用方式:sprintf(char *buffer,const char * format[,argument,...])
以下有使用方式
#include
#include
#include
#include
#include
int isNumber(char *a);
void getCurrentDate(int seconds);
int main(){
printf(歡迎進入定時關機系統!
);
getCurrentDate(0);
char str[2];
char flag = 1;
while(flag){
printf(輸入A定時關機,輸入C取消定時關機
);
gets(str);
if(strcmp(str,a)==0) {
printf(請輸入時間的秒數:
);
char seconds[10];
while(1){
gets(seconds);
if(isNumber((char*)seconds))
break;
else{
printf(輸入的秒數不正確,請重新給輸入!
);
continue;
}
}
int temp_seconds = atoi(seconds);
getCurrentDate(temp_seconds);
char shutdown[50] = shutdown -s -t ;
strcat(shutdown,seconds);
system(shutdown);
system(pause);
break;
} else if(strcmp(str,C)==0 || strcmp(str,c)==0) {
system(shutdown -a);
printf(已經取消定時關機
);
system(pause);
break;
}else{
printf(輸入的值不正確,請重新輸入!
);
flag=1;
}
}
return 0;
}
//判斷字符串是否是數字
int isNumber(char *a){
char flag=1;
int len = strlen(a);
for(int i=0;i 0){
rawtime += seconds;
}
timeinfo = localtime(&rawtime);
int year = timeinfo->tm_year + 1900;
int month = timeinfo->tm_mon+1;
int day = timeinfo->tm_mday;
int hour = timeinfo->tm_hour;
int min = timeinfo->tm_min;
int secs = timeinfo->tm_sec;
char *str = (char*)malloc(sizeof(char)*100);
memset(str,0,100);
//多個值合並字符串
if(seconds > 0){
sprintf(str,在%d年%d月%d日 %d時%d分%d秒後關機...,year,month,day,hour,min,secs);
}else{
sprintf(str,現在時間是:%d年%d月%d日 %d時%d分%d秒 ,year,month,day,hour,min,secs);
}
puts(str);
free(str);
}