目录
- :writing_hand:关机小程序敲前知识学习
- :computer:关机小程序
-
- [:boom:`strcmp()` 函数学习](#:boom:
strcmp()
函数学习) - 代码练习:
- [:boom:`strcmp()` 函数学习](#:boom:
📝学 / 练前预警:
✍️关机小程序敲前知识学习
下列的知识学习要注意这一点:
- 平台相关性 : 这些是 Windows 特有的命令。 在 Linux 或 macOS 上,关机命令是不同的(例如 shutdown -h now 或 sudo poweroff)。
1️⃣cmd中关机和停止关机
我们按住
win+R
,再输入cmd
就可以打开cmd了
- 我们可以通过**
cmd
来进行操作**(通过这些命令其实是 windows 系统的命令,这些是 Windows 特有的命令。)shutdown -s -t 60
:这是一个 Windows 的关机命令。
shutdown
:主命令,用于关闭、重启或注销计算机。-s
:关闭参数。代表"shutdown",即关闭计算机。-t 60
:时间参数 。代表"timeout",设置执行操作前的等待时间(单位为秒)-t 60 表示在 60 秒后执行关机操作。shutdown -a
:这是一个取消关机的命令。
*-a
:中止参数。 代表"abort",用于 中止系统关闭。- 拓展:
shutdown -r -t 60
:重新启动计算机。-r
: 代表"restart",-t 60 表示计算机将在 60 秒后自动重新启动。shutdown -s -t 0
:立即关机(等待时间为0秒)。
- 在cmd中输入
shutdown -s -t 60
后会弹出来下面这个窗口,提醒你60秒后关机
- 在cmd中输入
shutdown -a
后会自动取消关机,如果怕取消失败可以再次输入,相当于验证吧
2️⃣C语言中调用函数来关机
- 权限:执行这些命令通常需要管理员权限。如果你的 C 程序没有以管理员身份运行,system("shutdown ...") 可能会失败。
- 安全警告:在程序中嵌入关机命令时要非常小心 ,尤其是在循环或条件判断 中,否则可能导致电脑在用户不知情的情况下被关闭。
- 在 c 语言 程序中,你可以通过 system() 函数来调用这些系统命令,这个函数在
<stdlib.h>
头文件中
system("shutdown -s -t 60");
:执行关机命令system("shutdown -a");
:执行取消关机命令
💻关机小程序
上面我们学习大致的语法,下面我们来写一个代码,要求如下:
- 开始就是要在五分钟后关机
- system("shutdown -s -t 300");
- 取消关机要在屏幕打印"取消关机" ,并且提示 关机取消了,结束程序
- 如果屏幕打印的不是 取消关机,则一直重复输入,直到输入为取消关机或五分钟后自动关机
- 提示:
- 判断是否为取消关机这一字符串可以通过
strcmp()
函数来进行判断,需要头文件<string.h>
💥strcmp()
函数学习
strcmp()
是 C 语言标准库中的一个字符串比较函数,用于比较两个字符串是否相等。
- 函数原型:
int strcmp(const char *str1, const char *str2);
- 头文件:
#include <string.h>
- 函数功能:比较两个字符串 str1 和 str2 的内容(按字典顺序比较)。
- 这个函数会有返回值,后面的关机小程序 中可以通过这个来进行条件判断是否该函数返回值为0
返回值 | 含义 |
---|---|
<0 | str1 小于 str2 |
==0 | str1 等于str2 |
>0 | str1 大于 str2 |
- 英文字符和特殊字符:
- "按字典顺序比较" 解释:
- "字典顺序":就是英文字典中单词的排列顺序,也叫做字母顺序或词典顺序。(简单理解: 就像查英文字典一样,从A到Z依次比较。)
- 比较规则(逐字符比较),strcmp() 的比较过程:
- 从左到右逐个字符比较
- 遇到第一个不同的字符就停止比较
- 根据这两个字符的 ASCII 码值决定大小关系
- 例子:
c
#include <stdio.h>
#include <string.h>
int main() {
char str1[] = "hello";
char str2[] = "hello";
char str3[] = "world";
char str4[] = "apple";
// 比较相等的字符串
int result1 = strcmp(str1, str2);
printf("str1 vs str2: %d\n", result1); // 输出: 0
// 比较不相等的字符串
int result2 = strcmp(str1, str3);
printf("str1 vs str3: %d\n", result2); // 输出: 负数
// 比较大小
int result3 = strcmp(str3, str4);
printf("str3 vs str4: %d\n", result3); // 输出: 正数
return 0;
}
- 中文字符:
- strcmp() 对于中文字符的比较是不可靠的,因为它基于 ASCII 码值 , 而 中文是用多字节编码的。
- 下列代码除了两个字符串相等的情况下 ,输出结果可能是随机的
c
#include <stdio.h>
#include <string.h>
int main() {
// 中文字符比较示例
printf("中文比较测试:\n");
printf("苹果 vs 香蕉: %d\n", strcmp("苹果", "香蕉")); // 结果不可预测(虽然编译器会出现值,但这个是不可预测的)
printf("苹果 vs 苹果: %d\n", strcmp("苹果", "苹果")); // 应该返回0
printf("中国 vs 美国: %d\n", strcmp("中国", "美国")); // 结果不可预测
return 0;
}
所以使用这个函数建议用英文字符而非中文字符,可以自己将下面的代码优化
代码练习:
c
#include<stdio.h>
#include<stdlib.h> // 包含 system() 函数
#include<string.h> // 包含strcmp() 函数
/*
* 关机小程序是可以通过对系统的控制来进行电脑的关机以及停止关机
* 相当于一个小游戏,五分钟内循环输入字符串,直到遇到关机的条件退出或者五分钟后关机结束
*/
int main()
{
char input[20] = { 0 }; //字符数组初始化
system("shutdown -s -t 300"); //5分钟后关机
printf("如果要取消关机,则需要输入:取消关机\n");
while (1)
{
printf("请输入:");
scanf("%s", input); //输入字符串保存至数组中
if (strcmp(input, "取消关机") == 0) //字符串比较,如果两个字符串相等,则返回0,需要头文件string.h
{
system("shutdown -a");
printf("取消关机了\n");
break; //取消关机后就跳出循环
}
else
printf("输入的信息不是取消关机的条件\n\n");
}
return 0;
}
- 在运行代码时,还是会弹出这个提示框:
- 这个自行输入的情况:
✒️小结:
以上就是关机小程序的练习,其中我们学习了调用系统函数
system()
和字符比较函数strcmp()
。
- 感谢大家的阅读!🌹🌹