多个字符从两端移动,向中间汇聚
在开始操作之前,我们先讲解一下其中涉及到的知识点
一. strlen函数
在C语言中, strlen 是一个标准库函数,用于计算字符串的有效长度,即字符串中字符的个数,不包括结尾的空字符'\0'(区分:sizeof 运算符,求的是字节数,可用于计算数组元素个数)
1. 需要包含标准库头文件 <string.h>
2. 字符串必须以 '\0' 结尾
3. 返回值的类型是size_t(无符号类型)
举个例子:
#include <stdio.h>
#include <string.h>
int main()
{
char arr[] = { 'b', 'i', 't' };
printf("%d\n", strlen(arr));
return 0;
}
上述代码在定义数组arr时,不包含 ’\0‘ ,因此调用 strlen 会返回随机值而不是3
正确代码:
#include <stdio.h>
#include <string.h>
int main()
{
char arr[] = { 'b', 'i', 't','\0'};
printf("%d\n", strlen(arr));
return 0;
}
//运行结果:
//3
二. Sleep函数
1. 它不是C语言标准库函数,而是Windows API提供的特定函数
2. 在C语言中,Sleep函数用于让程序暂停执行指定时间,单位是毫秒,如:Sleep(1000)表示暂停1秒
3. Windows系统:需要包含<windows.h>
三. system("cls")
在C/C++中,system("cls") 是一个用于清空控制台(命令行窗口)屏幕的指令
功能:调用操作系统的命令cls,执行后会清除当前控制台窗口已输出的所有内容,并将光标移动到左上角
依赖:cls 是 Windows 的指令,仅在 Windows 下有效;且需要包含头文件<stdlib.h>
风险:不建议频繁调用,可能会影响程序性能;可能存在命令注入风险
四. 设计思路
五. 代码及效果
5.1 初始代码
#include <stdio.h>
#include <string.h>
int main()
{
//初始化两个字符数组
char arr1[] = "welcome to here";
char arr2[] = "***************";
//定义数组左右下标
int left = 0;
int right = strlen(arr1) - 1;
//逐次将arr1赋值给arr2
while (left <= right)
{
arr2[left] = arr1[left];
arr2[right] = arr1[right];
printf("%s\n", arr2);
left++;
right--;
}
return 0;
}
效果:迅速把下面的内容显示在屏幕上
5.2 改进一:调整内容输出速度
#include <stdio.h>
#include <string.h>
#include <windows.h>
int main()
{
char arr1[] = "welcome to here";
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);//改进处:每次输出间隔0.5秒
left++;
right--;
}
return 0;
}
5.3 改进二:添加清屏,更加动态化
#include <stdio.h>
#include <string.h>
#include <windows.h>
#include <stdlib.h>
int main()
{
char arr1[] = "welcome to here";
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;
}
动态化的最终效果大家可以在电脑上尝试一下
5.4 最终代码
如上
结语
这就是编程的乐趣所在,需要我们不断的动手实践,浅浅的期待一下下一个效果吧~