实现“ 字体逐渐展现 ”程序

在这里插入图片描述

本期介绍🍖
主要介绍:如何实现在屏幕上从两边向中间逐渐打印字符串。


  题目:编写字体逐渐展现程序,功能是:多个字符从两端向中逐渐间显现,直到全部显示为止。举个例子,要逐渐显示“hello world ”字符串,过程如下所示。

	"###########"
	"h#########d"
	"he#######ld"
	"hel#####rld"
	"hell###orld"
	"hello#world"
	"hello world"

  首先需要创建两个数组arr1和arr2,arr1存储用户想要打印的字符串,arr2则是存储由‘#’组成的字符串。然后将arr1中的字符逐次覆盖到arr2中,从两侧向中间覆盖,且每覆盖一次就执行一次打印,就可以实现上述效果。
  值得注意:读取用户输入的字符串,无法使用scanf函数实现,因为scanf无法有效读取带空白字符的字符串,当遇到第一个空白字符时scanf就停止读取了。这里我推荐使用gets函数,是专门用于读取字符串的,函数原型如下所示。

	char* gets(char* str);

  gets函数会从缓存中第一个字符开始读取,直到遇见换行符或文件结尾才停下,并会将字符串结束标志‘\0’自动追加复制到str字符串的末尾。如果gets函数读取成功,会将读取到的字符串,存储到参数str所指向的那块空间,并将那块空间的地址作为返回值返回。如果gets函数读取失败,则返回NULL

#include<stdio.h>
#include<string.h>

#define NUM 100

int main()
{
	char arr1[NUM] = { 0 };
	char arr2[NUM] = { 0 };

	//输入你想显示的字符串
	printf("输入你想显示的字符串:>\n");
	char* ch = gets(arr1);//读取字符串到arr1数组中
	//判断是否正常读取
	if (ch == NULL)//读取失败
	{
		printf("读取失败\n");
	}
	else//正常读取
	{
		int num = 0;
		int i = 0;
		int left = 0;
		int right = 0;
		//计算输入字符串字符个数
		num = strlen(arr1);

		//初始化arr2数组
		for (i = 0; i < num; i++)
		{
			arr2[i] = '#';
		}
		arr2[i] = '\0';//不能忘记字符串末尾的‘\0’

		left = 0;//数组最左侧元素的下标
		right = num - 1;//数组最右侧元素的下标

		//从两侧开始逐渐替换arr2数组
		while (left <= right)
		{
			arr2[left] = arr1[left];
			arr2[right] = arr1[right];
			//打印arr2数组
			printf("%s\n", arr2);
			//两侧下标网中间靠近一个单位
			left++;
			right--;
		}
	}
	return 0;
}

在这里插入图片描述


  为了能够更好的达到,逐渐显示字符串,下面介绍两个库函数:

  1. system("cls")函数,用于清空输出到屏幕上的信息,需要引用<stdlib.h>头文件
  2. Sleep(unsigned int second)函数,用于延时,单位为毫秒,需要引用<windows.h>头文件。

  代码如下:

#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<Windows.h>

#define NUM 100

int main()
{
	char arr1[NUM] = { 0 };
	char arr2[NUM] = { 0 };

	//输入你想显示的字符串
	printf("输入你想显示的字符串:>\n");
	char* ch = gets(arr1);//读取字符串到arr1数组中
	//判断是否正常读取
	if (ch == NULL)//读取失败
	{
		printf("读取失败\n");
	}
	else//正常读取
	{
		int num = 0;
		int i = 0;
		int left = 0;
		int right = 0;
		//计算输入字符串字符个数
		num = strlen(arr1);

		//初始化arr2数组
		for (i = 0; i < num; i++)
		{
			arr2[i] = '#';
		}
		arr2[i] = '\0';//不能忘记字符串末尾的‘\0’

		left = 0;//数组最左侧元素的下标
		right = num - 1;//数组最右侧元素的下标

		//从两侧开始逐渐替换arr2数组
		while (left <= right)
		{
			arr2[left] = arr1[left];
			arr2[right] = arr1[right];
			system("cls");//清空屏幕
			printf("%s\n", arr2);//打印arr2数组
			Sleep(1000);//延时1秒
			//两侧下标网中间靠近一个单位
			left++;
			right--;
		}
	}
	return 0;
}

  效果如下视频所示:

逐渐展现字符串


在这里插入图片描述

这份博客👍如果对你有帮助,给博主一个免费的点赞以示鼓励欢迎各位🔎点赞👍评论收藏⭐️,谢谢!!!
如果有什么疑问或不同的见解,欢迎评论区留言欧👀。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

MEMTO: Memory-guided Transformer for Multivariate Time Series Anomaly Detection

目录 一、问题与思路1.1 现存问题1.2 解决思路 二、模型与方法2.1 模型概览2.2 Encoder and decoder2.3 门控存储器模块2.3.1 门控存储器更新阶段2.3.2 查询更新阶段2.3.3 损失函数2.3.4 初始化内存项2.3.5 异常评分2.3.6 阈值设定 三、实验与分析3.1 模型结果3.2 消融实验3.3 …

宝塔一键迁移报错创建失败问题完美解决

很多站长朋友在使用宝塔面板迁移的时候总是出错&#xff0c;如图&#xff1a; 遇到这样的问题不要慌&#xff0c;我们已经完美处理&#xff0c;详细解决教程&#xff1a;宝塔一键迁移报错问题完美解决教程

深入理解操作系统Operator System(2)

目录 操作系统对上的管理 系统调用接口 用户操作接口&#xff08;库函数&#xff09; 系统调用和库函数的概念 结构层次示意图 总结 为什么要有操作系统❓ 上次主要介绍了操作系统的"管理"和操作系统对下的管理。本篇主要是对上的管理。 操作系统对上的管理 …

Linux智能网关结合Node-RED实现实时工业数据采集

工业4.0的发展&#xff0c;物联网技术在制造业中的应用越来越广泛。其中&#xff0c;基于Linux系统的工业物联网智能网关因其开放性、稳定性和安全性而备受青睐。这类智能网关创新性地集成了开源工具Node-RED&#xff0c;为从各种工业设备&#xff08;如PLC&#xff09;中高效收…

安装torch以及版本对应问题

首先查看cuda版本&#xff1a;winR 输入&#xff1a;nvidia -smi 我的cuda版本12.2&#xff0c;安装的torch版本要小于12.2 我的pip/conda源都改成清华源了&#xff0c;torch2.0以上的版本截止到2024年3月10日也没有。 pytorch官网&#xff1a;https://pytorch.org/ 寻找匹配…

关于比特币的AI对话

【ChatGPT】 比特币源码开源吗&#xff1f; 是的&#xff0c;比特币的源码是开源的。比特币项目是在MIT许可证下发布的&#xff0c;这意味着任何人都可以查看、修改、贡献和分发代码。比特币的源码托管在GitHub上&#xff0c;可以通过下面的链接进行访问&#xff1a; https://g…

注意!!墙裂推荐几个好用的实用小工具!一定会用到的!

前言 在开发的世界里&#xff0c;面对各种挑战和问题时&#xff0c;拥有一套合适的工具箱至关重要。这不仅能提升我们的工作效率&#xff0c;还能让复杂的任务变得简单&#xff0c;甚至在解决棘手问题的同时&#xff0c;还能让我们的心情略微舒畅。众所周知&#xff0c;有用的…

【EtherCAT实践篇】九、EtherCAT增加变量示例:增加浮点数输入变量

目的&#xff1a;在EtherCAT开发板上IO程序基础上进行修改&#xff0c;将原来的16位整数型数据Analog input改为32位浮点数&#xff0c;基于STM32F405底板。 1、XML配置修改 1.1 更改数据类型 ETG1020基础数据中包括浮点数 REAL&#xff0c;可以直接使用浮点数。 这里在xml…

MySQL索引+常见问题详解

网络上的讲述MySQL索引的文章太多了&#xff0c;我打算换个角度来说。我们尝试着从设计者的角度思考&#xff0c;索引为什么这么设计。 假如你是索引的设计者&#xff0c;你会如何设计索引。我们不妨以新华字典为例。如果我们要查询汉字爱是什么意思&#xff0c;我们有如下操作…

【读书笔记】针对ICS的ATTCK矩阵详解(一)

Techniques - ICS | MITRE ATT&CKhttps://attack.mitre.org/techniques/ics/ 一、初始访问&#xff08;Initial Access&#xff09; 该阶段&#xff1a;攻击者正在尝试进入ICS环境。 初始访问包括攻击者可能用作入口向量&#xff0c;从而可以在 ICS 环境中获得初始立足点的…

怎么在学习强国网上发布文章,学习强国投稿发稿方法途径,附学习强国多少钱价格明细表

学习强国是一款受用户欢迎的学习软件&#xff0c;许多人希望在其平台上发布自己的文章&#xff0c;以分享和传播自己的学习成果和心得体会。那么&#xff0c;怎么在学习强国网上发布文章呢&#xff1f;接下来&#xff0c;我们将介绍一些投稿发稿的方法和途径。 首先&#xff0c…

PLC的FC与FB模块程序的功能解析

前文讲了在西门子系列的PLC中四个程序模块的描述&#xff0c;从S7-1200PLC开始就有FC和FB程序块了&#xff0c;但在使用的时候&#xff0c;一些使用者还是不好理解&#xff0c;以至于不知道该如何选择。今天&#xff0c;我们就用大白话的方式给大家讲解FC与FB的功能。 1、FC与…

Python打印Linux系统中最常用的linux命令之示例

一、Linux中的~/.bash_history文件说明&#xff1a; 该文件保存了linux系统中运行过的命令的历史。使用该文件来获取命令的列表&#xff0c;并统计命令的执行次数。统计时&#xff0c;只统计命令的名称&#xff0c;以不同参数调用相同的命令也视为同一命令。 二、示例代码&am…

数据结构二叉树续

在前边我们讲完了二叉树的一些代码结构 现在呢我们需要进一步去细化 我们传参数组后&#xff0c;让数组里面的数据进行调整 如何调整成堆呢&#xff1f; 建堆 所以我们分装一个成堆的函数 还是先去断言 然后创建空间 这里我们需要用到一个memcpy函数 memcpy函数是用来…

RabbitMQ - 07 - 通过注解创建队列和交换机

之前消息模型的实现,都是通过rabbitMQ Management 控制台来手动创建 queue 和 exchange 的 在项目开发中有两种方式通过代码声明 创建 一种是通过 Bean 方式,这种代码量较大 稍繁琐 一种是通过注解的方式声明 先编写消费者代码 通过注解绑定了 消息队列,交换机,还有 routin…

预约自习室

预约自习室 1、技术介绍 自习室预约系统的后端开发语言采用Node&#xff0c;后端开发框架采用Express&#xff0c;数据库采用的Node的最佳搭档MySQL。采用Vue作为前端开发框架&#xff0c;Element-UI作为开发的组件库&#xff0c;微信小程序。期间采用axios实现网页数据获取&a…

Linux 进程程序替换

&#x1f493;博主CSDN主页:麻辣韭菜-CSDN博客&#x1f493;   ⏩专栏分类&#xff1a;http://t.csdnimg.cn/G90eI⏪   &#x1f69a;代码仓库:Linux: Linux日常代码练习&#x1f69a;   &#x1f339;关注我&#x1faf5;带你学习更多Linux知识   &#x1f51d;&#x1f5…

springboot257基于SpringBoot的中山社区医疗综合服务平台

中山社区医疗综合服务平台的设计与实现 摘 要 传统信息的管理大部分依赖于管理人员的手工登记与管理&#xff0c;然而&#xff0c;随着近些年信息技术的迅猛发展&#xff0c;让许多比较老套的信息管理模式进行了更新迭代&#xff0c;居民信息因为其管理内容繁杂&#xff0c;管…

车载诊断协议DoIP系列 —— 传输层控制协议(TCP)用户数据报协议(UDP)

车载诊断协议DoIP系列 —— 传输层控制协议(TCP)&用户数据报协议(UDP) 我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师(Wechat:gongkenan2013)。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 本就是小人物,输了就是输了,不要在意别人怎…

【notepad++工具使用之】批量加逗号

背景 在使用sql语句in关键字查询时&#xff0c;我们需要把数据用逗号进行隔开&#xff0c;在数据量非常少的时候&#xff08;十几二十个这样&#xff09;&#xff0c;可以手动的去加逗号分隔符&#xff1b; 但是遇到1000个怎么弄呢&#xff1f; 强大的Notepad 批量处理数据时…