恶搞一下,关机程序,模拟黑客的一天

前言

    芜湖,万人迷的小编又带着丰富绝伦的电脑来啦,今天我们不学习什么重要的知识,我们来写一个好玩的代码,想象一下今天的我也是一名黑客哈哈哈哈。

目录

  1. 关机程序简介
  2. 相关的函数介绍
  3. 代码实现

1. 关机程序简介

    今天我们要写的这个代码叫关机程序,不知道大家有没有看过一些视频,就是讲学生交作业恶搞老师,他们的作业是交自己写的代码编译的程序,但是他们在程序里面还加上了一些代码,搞得老师只能根据上面的提示一步一步的操作,最终掉入学生的陷阱哈哈哈哈。我们今天要写的这个代码其实和这个差不多的!!!大家是不是心中有了一些邪恶的想法哈哈哈哈哈。

2.相关的函数介绍

    首先呢,我们需要知道一些完成这个代码的函数以及相关的逻辑。
    首先是关键字 shutdown,顾名思义就是关机命令,他可以执行来自系统的命令。在Windows系统中自带有shutdown.exe程序,shutdown和shutdown.exe就是我们今天的主角之一。在这里插入图片描述
    大家看,shutdown.exe,就在我们Windows系统中
    然后我们再来了解shutdown的一些参数

  1. -s     关机
    
  2. -t     设置关机时间,后面可以跟上秒数
    
  3. -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;
}

    好了兄弟们,今天小编的分享就到此结束了嗷,大家不要太想小编了哦哈哈哈哈哈,期待我们下一次见面。

  • 22
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值