前言
芜湖,万人迷的小编又带着丰富绝伦的电脑来啦,今天我们不学习什么重要的知识,我们来写一个好玩的代码,想象一下今天的我也是一名黑客哈哈哈哈。
目录
- 关机程序简介
- 相关的函数介绍
- 代码实现
1. 关机程序简介
今天我们要写的这个代码叫关机程序,不知道大家有没有看过一些视频,就是讲学生交作业恶搞老师,他们的作业是交自己写的代码编译的程序,但是他们在程序里面还加上了一些代码,搞得老师只能根据上面的提示一步一步的操作,最终掉入学生的陷阱哈哈哈哈。我们今天要写的这个代码其实和这个差不多的!!!大家是不是心中有了一些邪恶的想法哈哈哈哈哈。
2.相关的函数介绍
首先呢,我们需要知道一些完成这个代码的函数以及相关的逻辑。
首先是关键字 shutdown,顾名思义就是关机命令,他可以执行来自系统的命令。在Windows系统中自带有shutdown.exe程序,shutdown和shutdown.exe就是我们今天的主角之一。
大家看,shutdown.exe,就在我们Windows系统中
然后我们再来了解shutdown的一些参数
-
-s 关机
-
-t 设置关机时间,后面可以跟上秒数
-
-a 取消关机
例如:shutdown(-s -t 60)表示的就是从执行代码开始,60s后执行关机命令
有了来自系统的命令我们还需要一个库函数来执行这个命令,这个库函数就相当于一个载体,承接来自系统的命令并 执行。这个库函数是system。我们来看看他的语法。
int system (const char* command);
其实我们理解为传系统命令给system就可以了,并不需要太注重函数system的返回值和参数是什么,(其实是小编不太理解哈哈哈哈)这个system的返回值是整型类型,就是可以构成链式访问,参数是char类型的指针。当我们把我们关机程序的命令传给函数后,运行代码,就可以执行我们的关机程序了。system的使用还需要包含头文件<stdlib.h>。
int main()
{
system("shutdown - s - t - 60");
return 0;
}
那执行了之后我们要不要给一个机会,就是给启动代码的人一个机会,让他可以停止关机,只要他完成我们想要他做的事情,就给他取消关机,他不做就正常关机。比如让他在屏幕上输入“我是猪”,只要他在我们限定的60秒内输入“我是猪”就可以停止关机,他不输入“我是猪”,就60秒后自动关机。
那这里我们想要进行判断他输入的是不是“我是猪”,那应该怎么判断呢,用大于小于等于进行判断吗?不可以这样做的,“我是猪”在C语言中属于char类型的,它是一串字符串不可以使用大于小于等于进行判断是否等于,那应该怎么比较呢?这里我们要新认识一个库函数strcmp。那strcmp应该怎么使用呢?我们来认识认识strcmp的语法
int strcmp ( const char * str1, const char * str2 );
strcmp,两个参数都是指针,返回类型是整型,两个参数只需要输入我们想要比较的字符串就可以了。使用strcmp还包含一个头文件<string.h>
int main()
{
char arr = "abcde";
char arr1 = "abcdefghsjsa";
strcmp(arr, arr1);
return 0;
}
还可以这么使用
int main()
{
char arr = "abcde";
strcmp(arr, "abcdef");
strcmp("abxdfr", "abcdef");
return 0;
}
只要两个参数是字符串就可以了,怎么输入都可以。那这么知道是等于还大于还是小于呢?这就要看strcmp的返回值了。
如果第一个参数里面的字符串大于第二个参数里面的字符串,就返回大于0的数值。
如果两个参数相等,那返回0。
如果第一个参数小于第二个参数,返回小于0的数值。
我们只需要记住相等返回0,不相等返回非0值就好了,关机程序不需要用到太多高深的函数。以上的知识理解了并结合之前学习的知识就可以写出来了,不要慌张哈哈哈哈哈。
那我们如何写出停止关机的指令呢?
前面提到过shutdown有一个参数是“-a”,表示取消关机,那我们可以这么写停止关机代码。
shutdown -a
只需要把这行代码放到system里面就可以停止关机了。
3.代码实现
实现呢,我们需要搭建一个框架来,这样子有利于我们顺着自己的逻辑敲代码。
1.程序运行后,倒计时60秒关机
2.如果输入“我是猪”,可以停止关机
3.判断输入是否是“我是猪”,如果是就停止倒计时关机,如果不是允许重新输入
按照我们的逻辑,需要一个循环多给机会
int main()
{
//1.关机命令
//2.循环开始
//用户输入
//判断是否为“我是猪”
return 0;
}
接下来我们就一步一步完成我们的代码吧!
int main()
{
char input[20] = { 0 };//承接用户输入
//1.关机命令
system("shutdown -s -t -60");
//2.循环开始
do
{
if ()//判断用户输入的字符串是否是“我是猪”
{
}
}while()
//用户输入
//判断是否为“我是猪”
return 0;
}
我们基本框架已经建立完成了,接下来只需要完善就代码就可以了,哈哈哈哈大家看小编表演吧!
#include<stdlib.h>
#include<string.h>
int main()
{
char input[20] = { 0 };//承接用户输入
//1.关机命令
system("shutdown -s -t 60");
//2.循环开始
do
{
scanf("%s", &input);
if (strcmp("我是猪", input) == 0)//判断用户输入的字符串是否是“我是猪”
{
//执行停止关机命令
system("shutdown -a");
break;
}
else//输入的不是“我是猪”
{
break;//跳出循环,给用户机会,重新输入
}
} while (input);
//用户输入
//判断是否为“我是猪”
return 0;
}
滴滴,小编写完了we,大家写出来了吗哈哈哈。感觉还是不是很好,我们再优化一下。
int main()
{
char input[20] = { 0 };//承接用户输入
//1.关机命令
system("shutdown -s -t 60");
//2.循环开始
do
{
printf("请注意,你的电脑将在一分钟内关机\n如果输入:我是猪\n就取消关机\n");
scanf("%s", &input);
if (strcmp("我是猪", input) == 0)//判断用户输入的字符串是否是“我是猪”
{
//执行停止关机命令
system("shutdown -a");
break;
}
else//输入的不是“我是猪”
{
break;//跳出循环,给用户机会,重新输入
}
} while (input);
//用户输入
//判断是否为“我是猪”
return 0;
}
优化完成了,是不是很人性化呢哈哈哈哈哈。
注意哦,即使你把黑框框给关掉了,但还是没有用,还是回一直倒计时的。
只有系统提示取消关机了,才是真正的停止关机。
但是大家发现没有,这个代码好像只能在VS里面运行,并不能发给别人运行,发给别人只是一大堆的代码,但是什么用都没有。那应该怎么才能让别人的电脑在不需要装VS也可以直接运行呢?我们只需要把Debug版本改为relese版本,然后在进行编译,这个时候会产生relese版本的代码,并且在我们代码文件保存路径里面会新生成一个以.exe为后缀结尾的文件,我们只需要将该文件发送给别人,别人点开这个文件,我们的代码就会自动运行了。
看第一个文件,后面显示应用程序。
怎么样啊兄弟们,是不是很好玩,我们的代码还可以使用其他的循环来写,还可以用我们上一篇文章学习的goto语句来写。
int main()
{
char input[20] = { 0 };//承接用户输入
//1.关机命令
system("shutdown -s -t 60");
//2.循环开始
add:
printf("请注意,你的电脑将在一分钟内关机\n如果输入:我是猪\n就取消关机\n");
scanf("%s", &input);
if (strcmp("我是猪", input) == 0)//判断用户输入的字符串是否是“我是猪”
{
//执行停止关机命令
system("shutdown -a");
}
else//输入的不是“我是猪”
{
goto add;
}
//用户输入
//判断是否为“我是猪”
return 0;
}
好了兄弟们,今天小编的分享就到此结束了嗷,大家不要太想小编了哦哈哈哈哈哈,期待我们下一次见面。