29-1 goto语句介绍
C语言中提供了可以随意滥用的goto语句和标记跳转的标号。
从理论上goto语句是没有必要的,实践中没有goto语句也可以很容易的写出代码。
但是某些场合下goto语句还是用得着的,最常见的用法就是终止程序在某些深度嵌套的结构的处理过程。
29-2 演示
建议:尽量少使用
int main()
{
again:
printf("hehe\n");
printf("haha\n");
goto again;
return 0;
}
运行结果:
注:只能在同一个函数内部进行跳转
29-3 使用场景
例:一次跳出两层或多层循环。
多层循环这种情况使用break是达不到目的的。它只能从最内层循环退出到上一层的循环。
for(...)
for (...)
{
for (...)
{
if (diaster)
goto error;
}
}
error:
if (diaster)
//处理错误情况
29-4 关机程序
执行系统命令要使用库函数:system
shoutdown -s:关机
shoutdown -t:设置关机时间
shoutdown -a:取消关机
代码如下:
int main()
{
char input[20] = { 0 };
system("shutdown -s -t 60");
again:
printf("你的电脑即将在60秒后关机,如果输入“esc”,则会取消关机\n");
scanf("%s", input);
if (strcmp(input, "esc") == 0)
{
system("shutdown -a");
}
else
goto again;
return 0;
}
运行结果:
也可以用循环代替:
int main()
{
char input[20] = { 0 };
system("shutdown -s -t 60");
while (1)
{
printf("你的电脑即将在60秒后关机,如果输入“esc”,则会取消关机\n");
scanf("%s", input);
if (strcmp(input, "esc") == 0)
{
system("shutdown -a");
break;
}
}
return 0;
}