当前位置:   article > 正文

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

自动关机小程序

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

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

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

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

举例1:

  1. #include<stdio.h>
  2. int main(void)
  3. {
  4. flag:
  5. printf("呵呵\n");
  6. printf("哈哈\n");
  7. goto flag; //进入死循环
  8. return 0;
  9. }

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

解析:

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

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

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

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

换成while 循环:

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

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

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

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

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

  1. //goto语句适合的场景
  2. for (……)
  3. for (……)
  4. {
  5. for (……)
  6. {
  7. if (disaster)
  8. goto error;
  9. }
  10. }
  11. error:
  12. if (disaster)
  13. // 处理错误情况

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

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家自动化/article/detail/268188
推荐阅读
相关标签
  

闽ICP备14008679号