C语言goto语句 做一个自动关机小程序 —— 给小伙伴来个“恶作剧”吧

C语言中提供了可以随意滥用的 goto语句和标记跳转的标号。

从理论上 goto语言是没有必要的,实践中没有goto语句也可以很容易写出代码。

但是某些场合下 goto语句还是用得着的,最常见的用法就是终止程序在某些深度嵌套的结构的处理过程,例如一次跳出两层或多层循环。

这种情况使用 break是是达不到目的的,它只能从最内层循环退出到上一层的循环。

举例1:

#include<stdio.h>
int main(void)
{
flag:
	printf("呵呵\n");
	printf("哈哈\n");
	goto flag;   //进入死循环
	return 0;
}

举例2:编写一个关机程序,只要运行起来,电脑就在1分钟内关机,如果输入:我是猪,就取消关机!

解析:

运行 cmd,打开命令行,输入shutdown -s -t 60  —— 60秒后关机;shutdown -a —— 取消关机

也可shutdown --help 了解其他操作

system() 函数执行系统命令,引用头文件<stdlib.h>

#define _CRT_SECURE_NO_WARNINGS 
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
int main(void)
{
    char input[50] = { 0 };
	system("shutdown -s -t 60");  // system()函数执行系统命令
again:
	printf("请注意,你的电脑在1分钟内关机,如果输入:我是猪,取消关机\n");
	scanf("%s", input);
	//if (input == "我是猪") //这样写是错的,判断字符串相等不能用==
	if (strcmp(input, "我是猪") == 0)
	{
		system("shutdown -a");
		printf("取消关机成功\n");
	}
	else
		goto again;
	return 0;
}

换成while 循环:

#define _CRT_SECURE_NO_WARNINGS 
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
int main(void)
{
	char input[50] = { 0 };
	system("shutdown -s -t 60");  // system()函数执行系统命令
	while (1)
	{
		printf("请注意,你的电脑在1分钟内关机,如果输入:我是猪,取消关机\n");
		scanf("%s", input);
		//if (input == "我是猪") //这样写是错的,判断字符串相等不能用==
		if (strcmp(input, "我是猪") == 0)
		{
			system("shutdown -a");
			printf("取消关机成功\n");
			break;
		}
	}
	return 0;
}

想把这个小程序发给小伙伴怎么办?

选择 Release 模式,再运行一遍程序,然后找到代码根目录下的Release 文件夹,会有一个.exe 文件,可把这个.exe文件发给小伙伴。

思考在本机搜索 服务,把这个小程序放进服务里去,启动类型改成自动会怎样?哈哈

goto语句真正适合的场景如下:

//goto语句适合的场景
	for (……)

		for (……)
		{
			for (……)
			{
				if (disaster)
					goto error;
			}
		}
	error:
	if (disaster)
		// 处理错误情况

注意事项:goto语句只能在一个函数范围内跳转,不能跨函数

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值