【小白系列】双向字符显示

目录

1.前言

2.效果展示

 3.代码讲解

 3.1 阶段一

 3.2 延迟效果

3.2 视觉效果实现

4.结语


1.前言

我们经常会看见广告词从两边向中间慢慢显示,那么利用代码是否也能做出这样的效果呢??

今天,我们就来探讨一下怎么用代码来完成这一显示方式。

2.效果展示

这里我用一句歌词的显示来示范

双向显示字符效果

 3.代码讲解

 3.1 阶段一

根据效果展示,很多人可能会觉得:害,这还不简单,直接全部上printf逐个打印不就好了?

哈哈,当然是可以的,但是这样就无法做出动态的感觉。

最合适的办法就是利用两组数组,并且循环替换数组的元素,最后打印出数组。循环此动作,便是双向显示字符的精髓所在。那具体如何操作呢?

#include <stdio.h>
//示例材料
//And I'm not gonna lose you now
//******************************
int main()
{
    //建立两个数组
	char arr1[] = "And I'm not gonna lose you now";
	char arr2[] = "******************************";
    //建立左,右两个变量作为下标
	int right = strlen(arr2)-1;
	int left = 0;
    //循环打印部分
	while (left <= right||left == right + 1)
	{   
        //打印数组2
		int i = 0;
		for (i = 0; i <= strlen(arr2) - 1; i++)
		{
			printf("%c", arr2[i]);
		}
		printf("\n");
        //替换数组元素
		arr2[left] = arr1[left];
		arr2[right] = arr1[right];
		left++;
		right--;
	}
}

像这样,我们已经可以做到这样的效果

 3.2 延迟效果

那测试过上述代码的小伙伴肯定会发现:你这个代码他刷刷刷就打印完了,也没有动态的效果呀

是的,这依靠这些代码,是不能感受出缓慢变化这一过程的,因为打印的速度太快了。

那么我们该怎么办呢?

这时候我们就该介绍一下头文件:windows.h 里面的Sleep()

#include <windows.h>
Sleep()

Sleep函数的作用是延迟执行当前脚本若干秒。括号内填写数字,即是延迟的时间,单位是毫秒。

#include <stdio.h>
#include <windows.h>
//示例材料
//And I'm not gonna lose you now
//******************************
int main()
{
    //建立两个数组
	char arr1[] = "And I'm not gonna lose you now";
	char arr2[] = "******************************";
    //建立左,右两个变量作为下标
	int right = strlen(arr2)-1;
	int left = 0;
    //循环打印部分
	while (left <= right||left == right + 1)
	{   
        //打印数组2
		int i = 0;
		for (i = 0; i <= strlen(arr2) - 1; i++)
		{
			printf("%c", arr2[i]);
		}
        //延迟执行
        Sleep(200);
		printf("\n");
        //替换数组元素
		arr2[left] = arr1[left];
		arr2[right] = arr1[right];
		left++;
		right--;
	}
}

如此,便有了缓慢变化的感觉。

但是又有人说了:你这个代码打印了这么多行,跟你视频的示例完全不一样啊。

对的,我们每次打印都会在控制台留下一串痕迹,如果电脑能以超快的速度清空痕迹并打印出新的内容,就像几千张图片衔接成一段视频那样,是否就能产生示例视频中的视觉效果呢?答案是正确的,那么该怎么实现这灵魂的一步呢?

3.2 视觉效果实现

这里便要介绍头文件stdlib.h中的system(“cls”)了。

system();是执行系统的函数。
windows操作系统中cls是系统的控制台清屏函数。

利用清屏,我们就能展现上述中的视觉效果了!!!

#include <stdio.h>
#include <windows.h>
#include <windows.h>
//示例材料
//And I'm not gonna lose you now
//******************************
int main()
{
    //建立两个数组
	char arr1[] = "And I'm not gonna lose you now";
	char arr2[] = "******************************";
    //建立左,右两个变量作为下标
	int right = strlen(arr2)-1;
	int left = 0;
    //循环打印部分
	while (left <= right||left == right + 1)
	{   
        //打印数组2
		int i = 0;
        //清屏
        system("cls");
		for (i = 0; i <= strlen(arr2) - 1; i++)
		{
			printf("%c", arr2[i]);
		}
        Sleep(200);
		printf("\n");
        //替换数组元素
		arr2[left] = arr1[left];
		arr2[right] = arr1[right];
		left++;
		right--;
	}
}

4.结语

 以上便是我们双向字符显示的全部内容啦,是不是很有趣呢?熟悉众多的函数以及操作符可以让我们用代码实现非常多的功能,甚至可以做出一个短视频。博主会与大家共同努力,一起进步的。

最后还是期待大家的点赞与关注啦,小白系列会持续更新的!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Laxinues

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值