这段C代码为什么不能正常运行?

C语言调用DOS命令实现定时关机:#include<stdio.h>#include<string.h>#include<stdlib.h>intprint(){prin... C语言调用DOS命令实现定时关机:

#include<stdio.h>
#include<string.h>
#include<stdlib.h>
int print()
{
printf(" ╪╪╪╪╪╪╧╧╧╧╧╧╧╧╪╪╪╪╪╪\n");
printf("╔═══╧╧C语言关机程序 ╧╧═══╗\n");
printf("║※1.实现10分钟内的定时关闭计算机 ║\n");
printf("║※2.立即关闭计算机  ║\n");
printf("║※3.注销计算机  ║\n");
printf("║※0.退出系统  ║\n");
printf("╚═══════════════════╝\n");
return 0;
}
void main()
{
system("title C语言关机程序");//设置cmd窗口标题
system("mode con cols=48 lines=25");//窗口宽度高度
system("color 0B");
system("date /T");
system("TIME /T");
char cmd[20]="shutdown -s -t ";
char t[5]="0";
print();
int c;
scanf("%d",&c);
getchar();
switch(c)
{
case 1:printf("您想在多少秒后自动关闭计算机?(0~600)\n");scanf("%s",t);
system(strcat(cmd,t));break;
case 2:system("shutdown -p");break;
case 3:system("shutdown -l");break;
case 0:break;
default:printf("Error!\n");
}
system("pause");
exit(0);
}
展开
 我来答
林___0
2018-06-20 · TA获得超过347个赞
知道小有建树答主
回答量:138
采纳率:100%
帮助的人:26.5万
展开全部

cmd的内容被strcat改变了。

#include<stdio.h>
#include<string.h>
#include<stdlib.h>
int print() {
    printf(" ╪╪╪╪╪╪╧╧╧╧╧╧╧╧╪╪╪╪\n");
    printf("╔═══╧╧C语言关机程序 ╧╧═══╗\n");
    printf("║※1.实现10分钟内的定时关闭计算机  ║\n");
    printf("║※2.立即关闭计算机               ║\n");
    printf("║※3.注销计算机                   ║\n");
    printf("║※0.退出系统                     ║\n");
    printf("╚═════════════════╝\n");
    return 0;
}
//void main(){ 从C99开始,必须使用 int main,这是一个好习惯。 
int main()
{
    system("title C语言关机程序");//设置cmd窗口标题
    system("mode con cols=48 lines=25");//窗口宽度高度
    system("color 0B");
    system("date /T");
    system("TIME /T");
    //char cmd[20]="shutdown -s -t ";
    char cmd[20];
    char t[5]="0";
    print();
    int c;
    scanf("%d",&c);
    getchar();
    switch(c) {
        case 1:
            printf("您想在多少秒后自动关闭计算机?(0~600)\n");
            scanf("%s",t);
            strcpy(cmd,"shutdown -s -t ");//等价于把cmd的内容变成 "shutdown -s -t " 
            system(strcat(cmd,t));
//strcat并不是简单地把两个字符串拼接,然后返回拼接后的字符串
//它会直接把cmd中原有的内容覆盖掉,因此每次使用之前都必须重置一下。 
            break;
        case 2:
            system("shutdown -p");
            break;
        case 3:
            system("shutdown -l");
            break;
        case 0:
            break;
        default:
            printf("Error!\n");
    }
    system("pause");
//  exit(0);
// 不建议使用在正常结束的位置使用 exit(0) (Just 个人观点)
return 0;
}
追问
谢谢,如果我想关闭计算机可以在cmd中输入shutdown -s -t,要是想注销,输入shutdown -l,可是问题是这个程序运行后,我按照上面的提示输入了想要操作的序号,却没反应了,这是怎么回事?比如我想注销键盘输入 3 ,但是回车后计算机没反应,如果直接在命令提示符里输入这个命令,直接注销了。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式