赞
踩
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语句只能在一个函数范围内跳转,不能跨函数
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。