一、关机程序
大家平时用电脑的时候都是怎么关机的呢,是不是都是如下图这样关机的呢?
那我们用C语言怎么实现电脑的关机呢,难道是利用代码控制鼠标的移动和点击进行关机吗?
那当然不是了,这样的话就太繁琐了。
大家在平时用电脑的时候不知道有没有注意到有一个东西叫cmd,在开始菜单输入cmd,这里会出现一个命令提示符。
在这个命令提示符里面就可以输入一些命令的。比如说我们输入下面一串命令。
这里才开始是没有shutdown -s -t 60以及shutdown -a这些命令的,都是小编加进去的。下面我来解读一下这些命令。
- shutdown 是用来关机的命令
- -s是设置关机
- -t是设置倒计时关机
- 60是倒计时60秒关机
注意这些数据的输入之间都是要加入图中的空格的,当你输入完这些数据后按下空格,就会弹出如下图提示,我这里以win11系统作演示,其他版本的windows可能有所区别:
弹出之后,你点击关闭按钮,再输入shutdown -a就可以取消关机了,不然小编就要重启电脑重写了哈哈。
那么这里问题就来了,我们如何使用C语言来实现这样的命令呢?
这里我们就需要使用一个函数system,这个函数是用来执行命令的,我们这里把shutdown -s -t 60传进去,system就真的会执行这个命令。
system("shutdown -s -t 60");
而使用system需要包含一个头文件,这个头文件是
#include <stdlib.h>
这里我们再加一句友好的提示,不然别人不知道我们在干什么,比如:
printf("请注意,你的电脑在1分钟内关机,如果输入:我是猪,就取消关机\n");
这里我们还需要给别人一个输入信息的机会是吧,那就scanf
scanf("%s", input);//因为我是猪是字符串,所以用%s,input不需要取地址,因为数组名本来就是地址
那输入一个字符串放哪里呢,是不是需要放到一个字符数组里面,这里就就给一个字符数组,比如说:
char input[20] = {0};//字符数组,用来存放字符串
那万一这里别人输入的不是我是猪,而是你是猪,你全家都是猪,那怎么办呢?这就需要一个判断的代码了,那有的人就这么写了:
if(input=="我是猪")
{
}
这里有些人的思路就是,intput里面放的是一个字符串,我是猪是字符串,就可以比较了,其实是不能这么写的,两个字符串在比较内容的时候,是不能使用等号的。
这里就使用了一种新的知识,就是
if (strcmp(input, "我是猪") == 0)
{
}
这里strcmp是string compare的缩写,需要引用头文件#include <string.h>,如果两个字符串相等,strcmp函数会返回0,那如果那个人很乖的话,我们这里就可以取消关机了哈哈,同理:
system("shutdown -a");//取消关机
但是如果那个人宁死不从,就不服输呢?咱们就可以else语句了,也有的兄弟比较仁慈,再给他60秒,60秒内输完我是猪,就不关机了,那这个时候怎么做呢,有的兄弟就想到了用goto,接下来展示完整代码以及运行的图片:
#define _CRT_SECURE_NO_WARNINGS
//写一个关机程序
//功能:
//程序运行起来后,电脑就倒计时1分钟关机
//如果在1分钟内输入:我是猪,就取消关机
//不输入的话,1分钟后就关机
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
//system是一个函数,这个函数是用来执行命令的
int main()
{
char input[20] = {0};//字符数组,用来存放字符串
system("shutdown -s -t 60");
again:
printf("请注意,你的电脑在1分钟内关机,如果输入:我是猪,就取消关机\n");
scanf("%s", input);//input不需要取地址,因为数组名本来就是地址
//判断
//strcmp - string compare
//如果两个字符串相等,strcmp函数会返回0
if (strcmp(input, "我是猪") == 0) //两个字符串在比较内容的时候,不能使用==
{
system("shutdown -a");//取消关机
printf("关机被取消\n");
}
else
{
goto again;
}
return 0;
}
这里goto就不断往前面跳,不断给机会,如果60s都不输入正确答案,就会关机。
有人就要说了,这个goto语句我不熟悉呀,能不能用别的方法呢?当然是可以的,这里的goto本质上是循环的作用嘛,我们可以使用while达到相同的作用,只要在输入我是猪的时候用break跳出循环就可以了。
想了想还是写一下,不过接下来的东西建议在自己电脑上试一试哈,不要用别人的电脑试,有点不道德哈哈。
其实呢我们电脑上有一个东西叫服务,可以在开始菜单里找到。
这里点开之后,任意一个服务,都可以右击鼠标点开看他的属性
可以看到任意一个服务都是一个.exe一个程序。
而我们刚刚写的程序,也是一个.exe的一个程序
而我们写出来的这个程序也是可以加到服务里去的。
大家也可以看到这个服务的启动类型既有自动也有手动。
而这个自动呢,就是你每次开电脑后,都会运行这个程序,哈哈那大家也知道会怎么样了,你的好兄弟要是每次开机后,都要输入一次我是猪,那是不是就嗯,但是呢!本作者言辞声明!!!这是非常不道德的对吧,而且万一把人家电脑搞坏了怎么办!!所以不要干,也不要说是我教的!!我为人正直,这下头事干不了一点。