【C语言】Sleep()函数----详解

news2024/10/6 14:25:59

🍁 博客主页:江池俊的博客

🍁收录专栏:C语言——探索高效编程的基石

🍁 如果觉得博主的文章还不错的话,请点赞👍收藏🌟 三连支持一下博主💞

目录

前言 

📌C语言sleep函数 

 sleep 函数的基本语法: 

注意 

📌实例

编写代码,演示多个字符从两端移动,向中间汇聚。

不使用sleep函数的效果(while循环实现)

使用sleep函数的效果(while循环实现)

for循环实现

while语句与for语句的转换:


前言 

在C语言中,sleep函数是一个非常有用的函数,用于实现程序的延时功能。无论是在控制程序执行速度、模拟实时系统、或者创建交互式用户体验,sleep函数都能够发挥重要作用。它允许程序在指定的时间间隔内暂停执行,并在暂停期间使系统的处理器资源得到休息。

通过使用sleep函数,程序员可以轻松地控制程序的执行速度,以适应不同的场景和要求。它可以帮助程序实现精确的时间控制,例如在游戏开发中实现动画效果的流畅展示,或者在多线程编程中确保不同线程的协调运行。此外,sleep函数还可以用于模拟实时系统的行为,以便更好地理解和调试程序。

本文将详细介绍C语言中sleep函数的使用方法、注意事项和潜在应用场景,旨在帮助读者更好地掌握并灵活运用这个强大的函数。无论您是一位C语言初学者,还是具备一定编程经验的开发者,本文都将为您提供有关sleep函数的全面解析和实用技巧,助您成为更高效、更出色的C语言程序员。让我们一同进入C语言的延时世界,探索sleep函数的神奇魅力。

📌C语言sleep函数 

语言中的 sleep 函数可以让当前线程暂停执行一段时间,通常用于模拟实际运行环境下的等待或延时操作。在 Windows 和 Linux 等主流操作系统中,sleep 函数的实现方式略有不同,但其基本原理都是通过让线程进入睡眠状态来实现等待或延时的效果。

 sleep 函数的基本语法: 

unsigned int sleep(unsigned int seconds);

示例 

#include<stdio.h>
#include<windows.h>
int main()
{
    int a=100;
    Sleep(3000);// 滞停3s打印a
    printf("%d",a);
    return 0;
}

运行结果: 

sleep函数示例

注意 

需要注意的是,sleep 函数的参数类型为 unsigned int,而不是浮点数类型。如果需要暂停小于 1 秒的时间,可以使用 usleep 函数,它的参数类型为微秒(unsigned int),可以精确地控制线程的等待时间。 

❗️在VC中使用带上头文件#include <windows.h>,在Linux下,gcc编译器中,使用的头文件因gcc版本的不同而不同#include <unistd.h> 

❗️在VC中,Sleep中的第一个英文字符为大写的"S" ,在linux下不要大写,在标准C中是sleep, 不要大写,简单的说VC用Sleep, 别的一律使用sleep

❗️在VC中,Sleep()里面的单位,是以毫秒为单位,所以如果想让函数滞留1秒的话,应该是Sleep(1000); 在Linux下,sleep()里面的单位是,而不是毫秒。

下面我们通过一个实例来输入了解sleep()函数。

📌实例

编写代码,演示多个字符从两端移动,向中间汇聚。

实现思路:定义两个字符数组,将要移动的字符数组元素赋值给另一个数组元素,实现多个字符从两端像中间汇聚。

不使用sleep函数的效果(while循环实现)

代码展示:

//编写代码,演示多个字符从两端移动,向中间汇聚。
#include <stdio.h>
#include <windows.h>
int main()
{
    char arr1[] = "How are you?";
    char arr2[] = "############";
    int left = 0;
    int right = strlen(arr1) - 1;
    printf("%s\n\n", arr2);
    //while循环实现
    while (left <= right)
    {
        arr2[left] = arr1[left];
        arr2[right] = arr1[right];
        left++;
        right--;
        printf("%s\n", arr2);
    }
    return 0;
}

运行结果: 

不使用sleep函数实例

 

使用sleep函数的效果(while循环实现)

代码展示:

//编写代码,演示多个字符从两端移动,向中间汇聚。
#include <stdio.h>
#include <windows.h>
int main()
{
    char arr1[] = "How are you?";
    char arr2[] = "############";
    int left = 0;
    int right = strlen(arr1) - 1;
    printf("%s\n\n", arr2);
    //while循环实现
    while (left <= right)
    {
        Sleep(1000);//增加这条语句,实现滞停1秒
        arr2[left] = arr1[left];
        arr2[right] = arr1[right];
        left++;
        right--;
        printf("%s\n", arr2);
    }
    return 0;
}

运行结果: 

使用sleep函数实例

 

总结:

上面两个代码的运行结果是相同的,但第一个代码打印结果是一瞬间的,而第二个代码打印结果则是有时间间隔的,给人一种在逐步打印结果的感觉,也展示了多个字符从两端移动,向中间汇聚的整体过程。

for循环实现

代码展示:

//编写代码,演示多个字符从两端移动,向中间汇聚。
#include <stdio.h>
#include <windows.h>
int main()
{
    char arr1[] = "How are you?";
    char arr2[] = "############";
    int left = 0;
    int right = strlen(arr1) - 1;
    printf("%s\n\n", arr2);
    //for循环实现
    for (left = 0, right = strlen(arr1) - 1;left <= right;left++, right--)
    {
        Sleep(1000);//滞停一秒
        arr2[left] = arr1[left];
        arr2[right] = arr1[right];
        printf("%s\n", arr2);
    }
    return 0;
}

运行结果: 

for循环实现sleep函数实例

while语句与for语句的转换:

🔥好了今天的分享就到这里,感谢大家的阅读与支持,期待与您在下一篇文章中再次相会。

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/768031.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

一本通1919:【02NOIP普及组】选数

这道题感觉很好玩。 正文&#xff1a; 先放题目&#xff1a; 信息学奥赛一本通&#xff08;C版&#xff09;在线评测系统 (ssoier.cn)http://ybt.ssoier.cn:8088/problem_show.php?pid1919 描述 已知 n 个整数 x1,x2,…,xn&#xff0c;以及一个整数 k&#xff08;k&#…

Docker 容器生命周期:创建、启动、暂停与停止----从创建到停止多角度分析

&#x1f337;&#x1f341; 博主 libin9iOak带您 Go to New World.✨&#x1f341; &#x1f984; 个人主页——libin9iOak的博客&#x1f390; &#x1f433; 《面试题大全》 文章图文并茂&#x1f995;生动形象&#x1f996;简单易学&#xff01;欢迎大家来踩踩~&#x1f33…

Vuex基本使用

目录 一、什么是vuex二、什么时候使用 Vuex三、Vuex 工作原理图四、vuex 核心概念和 API4.1 state4.2 actions4.3 mutations4.4 getters 五、代码生成器5.1 mapGetters5.2 mapState5.3 mapActions5.4 mapMutations 六、vuex模块化编码七、求和案例 一、什么是vuex 专门在 Vue …

文本生成人工评价指标及一致性校验方法总结(附代码实现)

前言&#xff1a;人工评估&#xff08; Manual Evaluation / Human Evaluation&#xff09;是文本生成工作评估中非常重要的一环。在对模型的文本生成质量进行评估时&#xff0c;除客观的自动评价指标&#xff0c;还需有人工评价指标的主观判断&#xff0c;综合二者的结果完成评…

zabbix监控自己

目录 一、实验环境准备 二、server端 1、配置阿里云yum源 2、部署lamp环境 3、启动lamp对应服务 4、准备java环境 5、源码安装zabbix 6、mariadb数据库授权 7、创建zabbix程序用户并授权防止权限报错 8、修改zabbix配置文件 9、配置php与apache 10、web安装zabbix …

[回馈]ASP.NET Core MVC开发实战之商城系统(开篇)

在编程方面&#xff0c;从来都是实践出真知&#xff0c;书读百遍其义自见&#xff0c;所以实战是最好的提升自己编程能力的方式。 前一段时间&#xff0c;写了一些实战系列文章&#xff0c;如&#xff1a; ASP.NET MVC开发学生信息管理系统VueAntdvAsp.net WebApi开发学生信息…

地摊盛行,VR全景如何帮助实体餐饮商家人气翻倍?

“民以食为天”&#xff0c;餐饮行业始终在市场经济中扮演着重要角色&#xff0c;前有“淄博烧烤火爆出圈”&#xff0c;后有“地摊经济夜市亮相”&#xff0c;可以看到餐饮行业呈现出市场广阔、高频刚需、标准化程度低的特点。但是地摊经济的盛行&#xff0c;让很多实体餐饮商…

【漏洞修复】node-exporter被检测/debug/vars泄漏信息漏洞

node-exporter被检测/debug/vars泄漏信息漏洞 漏洞说明修复方法 漏洞说明 和之前的pprof类似&#xff0c;都是国产的安全工具扫出来的莫名其妙的东西&#xff0c;这次也是报的node-exporter存在这个漏洞&#xff0c;又归我处理。当访问node-exporter的/debug/vars路由时能获取…

Ubuntu22.04下安装Ros2-Humble

ROS2的Humble版本为TLS版本&#xff0c;维护日期截止到2027年&#xff08;可以参考这里确查看Humble和Ubuntu系统的关系&#xff09; 可以看到&#xff0c;其支持Linux/MacOS/Windows等多个系统&#xff0c;针对于Linux系统&#xff0c;对应的系统版本是(Ubuntu 22.04&#xff…

el-checkbox获取选中的id

获取选中checkbox的label和value <el-checkbox-group v-model="checkedAlarmObj"><el-checkbox @change="changeObj" v-for="item in alarmObj" :label="item.roleName" :key="item.roleId":value="…

断路器绝缘电阻试验

断路器 绝缘电阻试验 试验目的 检验断路器合闸后灭弧室、 主绝缘和提升杆是否发生受潮&#xff0c; 劣化变质等缺陷。 试验设备 绝缘电阻测试仪 厂家&#xff1a; 湖北众拓高试 试验接线 相对地 端口间 试验步骤 真空断路器本体与断口的绝缘电阻 试验前对兆欧表本身进行检…

2023年了,为何 Selenium 依然这么火?

今天给大家带来的主题是自动化测试框架Selenium&#xff0c;话不多说&#xff0c;直接开始&#xff01; 1.什么是 Selenium 自动化测试 Jason Huggins 于 2004 年创建了一个 JavaScript 框架&#xff0c;旨在将其从重复的手动测试中解放出来。 最初命名为 JavaScriptTestRunn…

grafana备份脚本

备份思路 1、逐个dashboard备份配置 2、每个dashboard保存成一个文件 3、文件名定义为 目录名-dashboard名.json 4、使用python2 5、其中http_header中生成的Authorization API KEY已过期&#xff0c;请自己重新生成后替换使用。 6、保存文件部分适配的是windows&#xf…

使用IDEA构建jar然后转执行程序exe的爬坑

https://download.csdn.net/download/leoysq/87939492 构建jar

【矩阵的创建与基本运算】——matlab基础

目录索引 创建矩阵&#xff1a;zeros()&#xff1a;ones&#xff1a;eye()&#xff1a;magic()&#xff1a;引号创建序列矩阵&#xff1a; 加减与数乘&#xff1a;其他运算&#xff1a;指数运算&#xff1a;*exp()&#xff1a;* 点式运算&#xff1a; 创建矩阵&#xff1a; 如…

同心筑梦 展翅翱翔 | 2023届GBASE新员工筑梦计划培训报道

为帮助新入职员工增进彼此了解&#xff0c;快速融入GBASE大家庭中&#xff0c;激发大家工作热情&#xff0c;为此设计了拓展训练课程。完成“抓住机遇&#xff0c;摆脱困境”“蛟龙出海”“破冰”等环节后&#xff0c;新员工们已完全没有开始时的紧张&#xff0c;在全新的环境中…

MyBatis的相关api

1. MyBatis的相关api 1.1 Resources org.apache.ibatis.io.Resources&#xff1a;加载资源的工具类。 核心方法 返回值方法名说明InputStreamgetResourceAsStream(String fileName)通过类加载器返回指定资源的字节流 1.2 构建器SqlSessionFactoryBuilder 建造者设计模式&…

思维决定发展,测试人也不例外

最近特别懒&#xff0c;不想码字&#xff0c;原本写作就很差&#xff0c;更是退化严重。社招和校招面试过很多人&#xff0c;从十年前自己还很弱的时候学着面试&#xff0c;到数百次面试积累之后&#xff0c;面对候选人的时候&#xff0c;我的内心依然有些许紧张&#xff0c;非…

MySQL原理探索——31 误删数据后除了跑路,还能怎么办

在前面几篇文章中&#xff0c;介绍了 MySQL 的高可用架构。当然&#xff0c;传统的高可用架构是不能预防误删数据的&#xff0c;因为主库的一个 drop table 命令&#xff0c;会通过 binlog 传给所有从库和级联从库&#xff0c;进而导致整个集群的实例都会执行这个命令。 虽然我…

文件IO 文件属性获取,目录操作

文件属性获取 int stat(const char *path, struct stat *buf); 功能&#xff1a;获取文件属性参数&#xff1a; path&#xff1a;文件路径名 buf&#xff1a;保存文件属性信息的结构体返回值&#xff1a; 成功&#xff1a;0 失败&#xff1a;-1struct stat {ino_t st_ino;…