当前位置: 首页 > news >正文

C语言——关机小程序(有system()和strcmp()函数的知识点)

目录

  • :writing_hand:关机小程序敲前知识学习
    • :one:cmd中关机和停止关机
    • :two:C语言中调用函数来关机
  • :computer:关机小程序
    • :boom:`strcmp()` 函数学习
    • 代码练习:

📝学 / 练前预警:

  • 我们前面学习了C语言的选择和循环结构,操作符等基础知识,通过这些知识我们可以写一个关机小游戏了,如果有忘记或者没学习的可以打开下面的链接来进行学习
    C语言学习专栏🔗
  • 下面我们会写关机小程序,它涉及到以下几点:
    • cmd中进行系统的关机和取消关机(Windows的)
    • C语言程序中通过调用系统函数system()来进行关机和取消关机
    • 学习关机和取消关机的代码
    • 学习字符比较函数strcmp()
  • 最后我们就可以写一个完整的关机小游戏的代码了
  • 下面的关机小程序代码中这不是唯一的写法,我们也可以利于前面学习的goto来进行改写goto学习🔗

✍️关机小程序敲前知识学习

下列的知识学习要注意这一点:

  • 平台相关性这些是 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
返回值含义
<0str1 小于 str2
==0str1 等于str2
>0str1 大于 str2
  • 英文字符和特殊字符:
  • “按字典顺序比较” 解释:
  • “字典顺序”:就是英文字典中单词的排列顺序,也叫做字母顺序或词典顺序。(简单理解: 就像查英文字典一样,从A到Z依次比较。)
  • 比较规则(逐字符比较),strcmp() 的比较过程:
    • 从左到右逐个字符比较
    • 遇到第一个不同的字符就停止比较
    • 根据这两个字符的 ASCII 码值决定大小关系
  • 例子:
#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 码值 中文是用多字节编码的
  • 下列代码除了两个字符串相等的情况下,输出结果可能是随机
#include <stdio.h>
#include <string.h>int main() {// 中文字符比较示例printf("中文比较测试:\n");printf("苹果 vs 香蕉: %d\n", strcmp("苹果", "香蕉"));    // 结果不可预测(虽然编译器会出现值,但这个是不可预测的)printf("苹果 vs 苹果: %d\n", strcmp("苹果", "苹果"));    // 应该返回0printf("中国 vs 美国: %d\n", strcmp("中国", "美国"));    // 结果不可预测return 0;
}

所以使用这个函数建议用英文字符而非中文字符,可以自己将下面的代码优化


代码练习:

#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;				//取消关机后就跳出循环}elseprintf("输入的信息不是取消关机的条件\n\n");}return 0;
}
  • 在运行代码时,还是会弹出这个提示框:
    在这里插入图片描述
  • 这个自行输入的情况:
    在这里插入图片描述

✒️小结:
以上就是关机小程序的练习,其中我们学习了调用系统函数system()和字符比较函数strcmp()

  • 感谢大家的阅读!🌹🌹
http://www.dtcms.com/a/506682.html

相关文章:

  • php网站案例购物网页设计图片
  • golang面经7:interface相关
  • [Agent可视化] 配置系统 | 实现AI模型切换 | 热重载机制 | fsnotify库(go)
  • 【第7篇】引入低配大模型
  • 【Linux】Linux 进程信号核心拆解:pending/block/handler 三张表 + signal/alarm 实战
  • Java-154 深入浅出 MongoDB 用Java访问 MongoDB 数据库 从环境搭建到CRUD完整示例
  • 1.云计算与服务器基础
  • 基于Draw.io的实时协作架构设计与性能优化实践
  • 网站右侧固定标题怎么做深圳品牌馆设计装修公司
  • ASP.NET MVC 前置基础:宿主环境 HttpRuntime 管道,从部署到流程拆透(附避坑指南)
  • 北京单位网站建设培训俱乐部网站方案
  • 如何将一加手机的照片传输到笔记本电脑?
  • 手机群控软件如何构建高效稳定的运营环境?
  • 云手机 无限畅玩手游 巨 椰
  • 做男装去哪个网站好网站备案后 如何建设
  • 用C语言实现代理模式
  • 云开发CloudBase AI+实战:快速搭建AI小程序全流程指南
  • ESP32学习笔记(基于IDF):连接手机热点,用TCP协议实现数据双向通信
  • 一个小程序轻量AR体感游戏,开发实现解决方案
  • java整合itext pdf实现固定模版pdf导出
  • 26考研数学一、二、三真题试卷及答案PDF电子版(1987-2025年)
  • Django Web 开发系列(二):视图进阶、快捷函数与请求响应处理
  • 重庆哪些网站推广公司wordpress获取用户名
  • Bevy 渲染系统 Bindless 实现与交互逻辑
  • K8s控制器终极对比:StatefulSet与Deployment详解
  • [Agent可视化] docs | go/rust/py混构 | Temporal编排 | WASI沙箱
  • Linux服务器编程实践55-网络信息API:gethostbyname与gethostbyaddr实现主机名解析
  • Godot 2D游戏开发全流程实战
  • 自动驾驶工程师面试(定位、感知向)
  • Cocos学习——摄像机Camera