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");}elsegoto 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;
}