目录
- [1. 代码展示](#1. 代码展示 "#1%E4%BB%A3%E7%A0%81%E5%B1%95%E7%A4%BA")
- 二、代码详解
- [1. 头文件引入与宏定义](#1. 头文件引入与宏定义 "#1-%E5%A4%B4%E6%96%87%E4%BB%B6%E5%BC%95%E5%85%A5%E4%B8%8E%E5%AE%8F%E5%AE%9A%E4%B9%89")
- [2. 主函数与变量声明](#2. 主函数与变量声明 "#2-%E4%B8%BB%E5%87%BD%E6%95%B0%E4%B8%8E%E5%8F%98%E9%87%8F%E5%A3%B0%E6%98%8E")
- [3. 系统关机命令](#3. 系统关机命令 "#3-%E7%B3%BB%E7%BB%9F%E5%85%B3%E6%9C%BA%E5%91%BD%E4%BB%A4")
- [4. 标签与循环控制](#4. 标签与循环控制 "#4-%E6%A0%87%E7%AD%BE%E4%B8%8E%E5%BE%AA%E7%8E%AF%E6%8E%A7%E5%88%B6")
- [5. 用户输入与字符串比较](#5. 用户输入与字符串比较 "#5-%E7%94%A8%E6%88%B7%E8%BE%93%E5%85%A5%E4%B8%8E%E5%AD%97%E7%AC%A6%E4%B8%B2%E6%AF%94%E8%BE%83")
- [6. 程序结束](#6. 程序结束 "#6-%E7%A8%8B%E5%BA%8F%E7%BB%93%E6%9D%9F")
- 程序逻辑流程图
- 注意事项
- 实战演练
前言
作为萌新,既想运用自己新学的c语言整蛊朋友,又担心自己的知识储备不够。接下来介绍的关机程序就是你的最好选择(只能在电脑上使用,手机无效)
1.代码展示
c
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int main()
{
char input[20] = { 0 };
system("shutdown -s -t 60");
again:
printf("你电脑将会在1分钟内关机,如果输入:我系250,就取消关机\n");
system("shutdown -s -t 60");
scanf("%s", input);
if (strcmp(input,"我系250") == 0)
{
system("shutdown -a");
printf("请输入文本\n");
}
else
{
goto again;
}
return 0;
}
结果展示 
二、代码详解
1. 头文件引入与宏定义
c
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define _CRT_SECURE_NO_WARNINGS:这是一个预处理指令,用于禁用Visual Studio编译器中的安全警告。在VS中,像scanf这样的函数会被认为是不安全的,加上这个宏可以避免编译时的警告信息。#include<stdio.h>:引入标准输入输出库,提供了printf、scanf等函数。#include<stdlib.h>:引入标准库,提供了system函数用于执行系统命令。#include<string.h>:引入字符串处理库,提供了strcmp函数用于字符串比较。
2. 主函数与变量声明
c
int main()
{
char input[20] = { 0 };
int main():C语言程序的入口函数,程序从这里开始执行。char input[20] = { 0 };:声明一个字符数组input,大小为20个字符,并用0初始化所有元素。这个数组用于存储用户输入的字符串。
3. 系统关机命令
c
system("shutdown -s -t 60");
system():执行系统命令的函数。"shutdown -s -t 60":Windows系统的关机命令参数:shutdown:关机命令-s:关闭计算机-t 60:设置60秒后关机
4. 标签与循环控制
c
again:
printf("你电脑将会在1分钟内关机,如果输入:我系250,就取消关机\n");
system("shutdown -s -t 60");
again::这是一个标签(label),配合goto语句实现循环跳转。printf():向控制台输出提示信息,告诉用户程序的功能。- 再次执行
system("shutdown -s -t 60"):确保即使用户输入错误后重新循环,关机计时器也会重新设置为60秒。
5. 用户输入与字符串比较
c
scanf("%s", input);
if (strcmp(input,"我系250") == 0)
{
system("shutdown -a");
printf("请输入文本\n");
}
else
{
goto again;
}
scanf("%s", input):从标准输入读取字符串,存储到input数组中。%s是字符串格式说明符。strcmp(input,"我系250"):比较input字符串和"我系250"字符串:- 返回0表示两个字符串完全相同
- 返回负数表示
input小于"我系250" - 返回正数表示
input大于"我系250"
system("shutdown -a"):取消关机命令。-a参数表示中止系统关闭。goto again;:如果用户输入错误,跳转到again:标签处,重新开始循环。
6. 程序结束
c
return 0;
}
return 0;:主函数返回0,表示程序正常结束。在C语言中,main函数返回0通常表示成功执行。
程序逻辑流程图
flowchart TD
A[程序开始] --> B[设置60秒后关机]
B --> C[显示提示信息]
C --> D[等待用户输入]
D --> E{输入是否正确?}
E -->|是| F[取消关机]
F --> G[显示提示信息]
G --> H[程序结束]
E -->|否| I[跳转到标签处]
I --> C
注意事项
- 安全性:这个程序会实际执行系统关机命令,请在测试时谨慎使用。
- 平台依赖 :
shutdown命令是Windows特有的,在Linux或macOS上无法运行。 - 字符串比较 :
strcmp函数区分大小写,且比较的是整个字符串。 - 缓冲区大小 :
input数组大小为20,如果用户输入超过19个字符(留一个给字符串结束符'\0'),会导致缓冲区溢出。 - goto语句 :虽然这里使用
goto实现了循环,但通常推荐使用while或do-while循环,代码更清晰易读。
实战演练
记得保存后在文件夹中将后缀改为.exe以做伪装 

非常好用 希望大家能够学会