[C语言]实现字符串从头尾分别输出字符的动画效果

 环境是Visual Studio2017

//实现字符串从头尾分别输出,直到字符串结束。思路是建立两个数组,以替代方式实现
#include<stdio.h>
#include<Windows.h>

int main()
{
	char arr1[] = "好好学习,天天向上"; //中文字符占2位
	char arr2[] = "                 "; //空格字符串,与arr1长度相同
	int left = 0;   //数组左下标
	int right = strlen(arr1) - 1;  //数组右下标,字符长度减1
	while (left <= right)
	{
		arr2[left] = arr1[left];
		arr2[left + 1] = arr1[left + 1];  //因为中文在字符串中占2位,所以多这一行代码
		arr2[right] = arr1[right];
		arr2[right-1] = arr1[right-1];    //同上
		printf("%s\n\a", arr2);    //多一个\a使得电脑发出声音
		Sleep(1000);        //延迟输出,单位为毫秒
		system("cls");    //清空屏幕,多了这一行的代码,可以使得程序动画只在一行内显示
		              //但是最后一次输出也会被清除,所以在循环外写个printf,使得结果保留。
		left+=2, right-=2;
	}
	printf("%s\n\a", arr2);
	return 0;
}

注意:因为字符串采用中文字符,一个中文字符占据字符数组两个位置,所以数组的左值和右值要改变两个字符,否则会乱码。数组下标变化时也要+2

若是采用英文字符,则可以省略arr2[left + 1] = arr1[left + 1]; 等语句。数组下标变化时,也只需+1即可。


版权声明:本文为Xiao_xiaoban原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。