C语言光标旋转与倒计时功能实现示例详解

目录
  • 1、光标旋转
  • 2、倒计时

1、光标旋转

首先问大家一个问题,大家觉得回车与换行是一个相同的概念吗?

很多人往往把它们两个当作是一个相同的概念,为什么会这么说呢?回想一下'\n',大家觉得这是回车符号呢?还是换行符号呢?好像我们在日常中并没有特意区分这两个概念,我们既说'\n'是一个回车符号,也说这是一个换行符号,这就是我们混淆的表象,但回车与换行确实两个不同的概念,接下来带大家了解一下回车与换行吧!

回车:代表的是光标回到当前行的最开始的位置。

换行:代表的是光标移动到下一行。

根据上面的概念,真正的回车符号应该是'\r',即回到当前行的起始位置,而我们通常了解的'\n'应该是回车换行符,因为它的功能既包括了回车,也包括了换行,即光标跳转到下一行的起始位置。

而我们今天讲的光标旋转功能就是利用了回车符'\r',接下来废话不多说,直接上代码!然会根据代码给大家进行讲解。

#include<stdio.h>
#include<windows.h>
int main()
{
    int index = 0;
    const char* lable = "|/-\\";//  \是特殊字符,如果想取字符本身,就要在前面加'\'
    while(1)
    {
        index %= 4;
        printf("[%c]\r", lable[index]);
        index++;
        Sleep(30);
    }
    system("pause");
    return 0;
}

这个程序首先是定义了一个char类型的数组lable,里面存储的元素依次为'| / - \',至于最后为什么用了两个\\,在程序中已经给出了相应的解释,然后构造一个死循环,对数组元素逐个循环打印,为了保证在打印完尾元素之后打印的是首元素,通过对index对4取余保证数组下标是始终为0~3,这样保证了数组元素的循环打印。

通过'\r'进行回车操作回到输出行的起始位置保证了每一次的输出都是在一行的起始位置处进行输出,然后通过休眠函数Sleep()进行控制每一次输出的间隔进而形成动态效果,这样就实现了光标旋转的功能。

注意:使用休眠函数需要引用windows.h头文件,休眠函数中()内的数字单位为毫秒。

2、倒计时

倒计时功能相对来说并不难实现,直接上代码,然后给大家简单解释一下。

#include<stdio.h>
#include<windows.h>
int main()
{
    int i = 9;
    for(;i>=0;i--)
    {
        printf("[%d]\r",i);
        Sleep(500);
    }
    system("pause");
    return 0;
}

其实这段代码也是简单的使用了'\r'与Sleep()休眠函数,然后实现了倒计时的功能。

两个程序的共同点是均使用了'\r'与Sleep()函数,看吧,这个我们在C语言中忽略的小小的点竟然能发挥处如此巨大的作用,想不到吧!好了,今天的分享到此结束,感谢大家的支持,更多关于C语言光标旋转与倒计时功能的资料请关注我们其它相关文章!

(0)

相关推荐

  • C语言之实现控制台光标随意移动的实例代码

    原理引入windows.h,首先是要获得输入的东西,然后通过判断: 1.方向键:执行上下左右的移动功能 2 .回车键:执行换行的功能. 3.普通键:输入功能. 终点就是要获取到屏幕上的坐标,当按下了方向键以后,坐标值+1,或者减一,从而实现了光标的自由移动. //C语言实现控制台中光标随意移动 #include <stdio.h> #include <windows.h> #include <conio.h> HANDLE hout; //获得输入 char getIn

  • C语言编程C++旋转字符操作串示例详解

    目录 旋转字符串 字符串左旋 题前认知: 暴力移位: 三步翻转: 判断字符串旋转 题前认知 字符串追加判断 旋转字符串 字符串左旋 实现一个函数,可以左旋字符串中的k个字符. 例如: ABCD左旋一个字符得到BCDA ABCD左旋两个字符得到CDAB 题前认知: 一个字符串如果就定死了.eg:char arr[]="dfdf"什么的那多没意思,一点都没有人机交互的感觉,(虽然现在人机交互适合个体,不适合集群,但也是比死板的定死字符串舒服) 所以字符串得是我们可输入的,才有可玩性,玩的不

  • 计时器的time_t和clock_t 的两种实现方法(推荐)

    想给自己初步完成的相空间搜索算法计算一下运行时间,于是尝试了如下使用 time_t 类型的方式 #include <stdlib.h> #include <iostream> #include <time.h> #include "StateFunctions.h" using namespace std; int main(int argc, char** argv) { time_t start, finish; time(&start)

  • C语言实现简单的定时器

    本文实例为大家分享了C语言实现简单的定时器的具体代码,供大家参考,具体内容如下 1.代码分析 2.代码 #include <stdio.h> #include <time.h> #include <conio.h> #ifndef CLOCKS_PER_SEC #define CLOCKS_PER_SEC 1000 #endif int main( void ) { clock_t start; long count = 1; start = clock(); whil

  • C语言小项目计时器的实现思路(倒计时+报警提示)

    目录 实现思路 1.极简版本 运行效果 2.普通版本 运行效果 3.高级版本 运行效果 大家对计时器应该不陌生,我们在制定一个计划时,经常喜欢设置一个倒计时来规定完成时限,等到计时结束,它还会报警提示,今天,我就用C语言编写一个简易的倒计时计时器. 实现思路 简单介绍一下我的实现思路: 本文包括三个版本,分别是极简版.普通版.高级版: 极简版:简单的单次倒计时,只能设置秒数,计时通过Sleep()函数实现(粗略倒计时),先输入秒数cnt,然后每过1秒(Sleep(1000),cnt减1,直到cn

  • C语言光标旋转与倒计时功能实现示例详解

    目录 1.光标旋转 2.倒计时 1.光标旋转 首先问大家一个问题,大家觉得回车与换行是一个相同的概念吗? 很多人往往把它们两个当作是一个相同的概念,为什么会这么说呢?回想一下'\n',大家觉得这是回车符号呢?还是换行符号呢?好像我们在日常中并没有特意区分这两个概念,我们既说'\n'是一个回车符号,也说这是一个换行符号,这就是我们混淆的表象,但回车与换行确实两个不同的概念,接下来带大家了解一下回车与换行吧! 回车:代表的是光标回到当前行的最开始的位置. 换行:代表的是光标移动到下一行. 根据上面的

  • go语言定时器Timer及Ticker的功能使用示例详解

    目录 定时器1-"*/5 * * * * *" 设置说明 定时器2-Timer-Ticker Timer-只执行一次 Ticker-循环执行 Timer延时功能 停止和重置定时器 定时器Ticker使用 定时器1-"*/5 * * * * *" package main import ( "fmt" "github.com/robfig/cron" ) //主函数 func main() { cron2 := cron.New

  • Go语言基础变量的声明及初始化示例详解

    目录 一.概述 二.声明变量 三.编译器推导类型的格式[一定要赋值] 四.短变量声明并初始化 五.匿名变量--没有名字的变量 六.注意 七.案例 一.概述 变量的功能是存储用户的数据 二.声明变量 Go语言的每一个变量都拥有自己的类型,必须经过声明才能开始用 变量的声明格式: var <变量名称> [变量类型] var a int //声明一个整型类型的变量,可以保存整数数值 var b string //声明一个字符串类型的变量 var c float32 //声明一个32位浮点切片类型的变

  • R语言使用cgdsr包获取TCGA数据示例详解

    目录 TCGA数据源 TCGA数据库探索工具 查看任意数据集的样本列表方式 选定数据形式及样本列表后获取感兴趣基因的信息,下载mRNA数据 选定样本列表获取临床信息 综合性获取 下载mRNA数据 获取病例列表的临床数据 从cBioPortal下载点突变信息 从cBioPortal下载拷贝数变异数据 把拷贝数及点突变信息结合画热图 TCGA数据源 众所周知,TCGA数据库是目前最综合全面的癌症病人相关组学数据库,包括的测序数据有: DNA Sequencing miRNA Sequencing P

  • C语言动态内存管理malloc柔性数组示例详解

    目录 1.1为什么存在动态内存管理 1.2动态内存管理函数 1.2.1malloc 1.2.2free 1.2.3calloc 1.2.4realloc 1.3动态内存管理函数易错点 1.3.1对NULL指针的解引用操作 1.3.2对动态开辟空间的越界访问 1.3.3对非动态开辟内存使用free释放 1.3.4使用free释放一块动态开辟内存的一部分 1.3.5对同一块动态内存多次释放 1.3.6动态开辟内存忘记释放(内存泄漏) 2.1常见相关笔试题 2.2C/C++语言中的内存开辟 2.3柔性

  • C语言实现二叉树链式结构的示例详解

    目录 前言 1. 链式二叉树结构 2. 二叉树的遍历 2.1 前序遍历 2.2 中序遍历 2.3 后序遍历 2.4 层序遍历 3. 常见功能 3.1 二叉树结点个数 3.2 二叉树叶子结点个数 3.3 第K层结点的个数 3.4 二叉树的深度 3.5 判断是不是树是不是完全二叉树 3.6 在二叉树中查找值为x的结点 3.7 拿到每一层的数据 4. 二叉树的创建和销毁 4.1 二叉树的创建 4.2 二叉树的销毁 前言 前面我们已经对堆进行学习,堆就是一个顺序结构的二叉树,把数组看成二叉树,下面一起学

  • Go语言基础切片的创建及初始化示例详解

    目录 概述 语法 一.创建和初始化切片 make 字面量 二.使用切片 赋值和切片 切片增长 遍历切片 总结 总示例 示例一  两个slice是否相等 示例二 两个数字是否包含 概述 切片是一种动态数组 按需自动改变大小 与数组相比,切片的长度可以在运行时修改 语法 一.创建和初始化切片 make 使用内置函数make()创建切片: var slice []type = make([]type, len, cap) //简写: slice := make([]type, len, cap) 字面

  • Go语言基础go build命令用法及示例详解

    目录 go build 一个Go项目在GOPATH下,会有如下三个目录 使用: 注意: go build 1. 用于测试编译多个包或一个main包 2. build命令编译包丢弃非main包编译结果,只是检查是否能够被编译 3. 保留main包编译结果 一个Go项目在GOPATH下,会有如下三个目录 bin存放编译后的可执行文件 pkg存放编译后的包文件 src存放项目源文件 一般,bin和pkg目录可以不创建,go命令会自动创建(如 go install),只需要创建src目录即可. 使用:

  • Go语言基础if条件语句用法及示例详解

    目录 概述 语法 格式规则 概述 条件语句需要开发者通过指定一个或多个条件 并通过测试条件是否为 true 来决定是否执行指定语句 并在条件为 false 的情况再执行另外的语句. 语法 package main func main() { //第一种格式 if 条件表达式 { 语句1 } //第二种格式 if 初始化表达式; 条件表达式 { 语句1 } //第三种格式 if 初始化表达式; 条件表达式 { 语句1 }else{ 语句2 } //第四种格式 if 初始化表达式; 条件表达式 {

  • Java实现图片裁剪功能的示例详解

    目录 前言 Maven依赖 代码 验证一下 前言 本文提供将图片按照自定义尺寸进行裁剪的Java工具类,一如既往的实用主义. Maven依赖 <dependency> <groupId>com.google.guava</groupId> <artifactId>guava</artifactId> <version>30.1.1-jre</version> </dependency> <dependen

随机推荐