如何闪烁打印一串字符:
下面举一个例子:
例如闪烁打印“Welcome to my channel!!!”
效果为:
************************
W**********************!
We********************!!
Wel******************!!!
Welc****************l!!!
Welco**************el!!!
Welcom************nel!!!
Welcome**********nnel!!!
Welcome ********annel!!!
Welcome t******hannel!!!
Welcome to ** channel!!!
Welcome to my channel!!!
最后停留在最后一句“Welcome to my channel!!!”,而前面的每一句在出现500ms后清除
这里打印中出现的停顿和清除需要用到两个函数:
休眠函数Sleep( )和清屏函数windows( ),两者对应的头文件分别是#include<windows.h>和#include<stdlib.h>(Sleep函数括号中的数字单位为毫秒,1000即1秒,"cls"为清屏代码)
#include<windows.h>
#include<stdlib.h>
Sleep(1000);//Sleep函数是实现睡眠,单位是毫秒
system("cls");//system是一个库函数,可以执行系统命令,cls是清空屏幕的一个命令
然后:
将要打印的字符串存到一个数组arr1[]中,将对应量字符数的星号(*)存入另外一个数组arr2[]中。接着将星号(*)最左端和最右端分别替换成arr1[]中的最左值最右值,这里我们需要分别取出数组arr1[]中的最左值(left)最右值(right)取出来,left作角标初始化为0即可,right作角标若不知道字符串长度我们则需要用到库函数strlen( )来取出长度,取出后要减1才会是最右值,因为要排除角标末尾省略的\0。
#include <string.h>
char arr1[] = "Welcome to my channel!!!";
char arr2[] = "************************";
int left = 0;//左下标
int right = strlen(arr1)-1;//右下标
接下来:
进入循环,反复将arr2[left]赋值为arr2[left],arr2[right]赋值为arr1[right]
每一次打印,停顿,清空,left+1,right-1执行完这5个步骤后
判断left是否满足right,如果满足则再一次执行上述5个步骤
如果不满足则停止执行
如下是完整代码:
#include <stdio.h>
#include <string.h>
#include <windows.h>
#include <stdlib.h>
int main()
{
char arr1[] = "Welcome to my channel!!!";
char arr2[] = "************************";
int left = 0;
int right = strlen(arr1)-1;
while (left<=right)
{
arr2[left] = arr1[left];
arr2[right] = arr1[right];
printf("%s\n", arr2);
Sleep(500);
system("cls");
left++;
right--;
}
printf("%s\n", arr2);
return 0;
}
总结:
#include<string.h>头文件-引用求数组长度的函数strlen(arr1)(注意:strlen( )的末位脚标对应\0)
#include<windows.h>头文件-引用系统函数system("cls")
#include<stdlib.h>头文件-引用睡眠(停顿)函数Sleep(time)
(注意:括号内的time时间单位为毫秒)
——END——