C语言goto语句详解

goto语句

我们先看一个代码:

int main()
{
     
    flag:
    printf("hehe\n");
  	printf("haha\n");
    
    goto flag;
    return 0;
}

这段代码我们会死循环的一直打印hehe haha,当程序看到flag:时,他不管,直接往下走,到达goto flag时,他又回到第三行代码,就这样一直循环。

C语言goto语句详解_第1张图片

C语言中提供了可以随意滥用的 goto语句和标记跳转的标号。
从理论上 goto语句是没有必要的,实践中没有goto语句也可以很容易的写出代码。
但是某些场合下goto语句还是用得着的,最常见的用法就是终止程序在某些深度嵌套的结构的处理过程,例如一次跳出两层或多层循环。
这种情况使用break是达不到目的的。它只能从最内层循环退出到上一层的循环。

下面讲解一个关机程序:

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

命令提示符:关机:shutdown -s -t 60

取消关机:shutdown -a

打开电脑上的命令提示符,输入shutdown -s -t 60,电脑将会在60秒后关机,-s的意思是关机,-t是设置时间,输入shutdown -a后取消关机。

C语言goto语句详解_第2张图片

#include
#include
#include
//关机程序
//只要运行起来,电脑就在1分钟内关机,如果输入:我是猪,就取消关机!
//关机:shutdown -s -t 60
//取消关机:shutdown -a
int main()
{
     
	//关机 
	//c语言提供了一个函数:system()-执行系统命令的
	char input[20] = {
      0 };//存放输入的信息
	system("shutdown -s -t 60");//system - stdlib.h
	while (1)
	{
     
again:
		printf("请注意,你的电脑在1分钟内关机,如果输入:爸爸,就取消关机\n");
		scanf("%s", input);
		//string.h
		if (strcmp(input,"爸爸") == 0)//两个字符串比较是不能用==号的,需要用strcmp() - string strcmp
		{
     
			system("shutdown -a");
			break;
		}
		else
		{
     
			goto again;
		}
	}
	return 0;
}

C语言提供了一个函数:system()-执行系统命令的,我么创建了一个字符数组来存放输入的信息,用strcmp函数来比较输入信息是否一致,一致返回0,则进入条件语句,取消关机,break出循环,如果输入错误,则goto到again一直继续输入,直到60s结束电脑关机。

goto语句只能在一个函数范围内跳转,不能跨函数

C语言goto语句详解_第3张图片

这里产生了报错,goto语句就讲解到这里。

欢迎大家一起学习交流!

你可能感兴趣的:(c语言)