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); }