🚀个人主页:BabyZZの秘密日记
📖收入专栏:C语言
在编程的世界里,我们常常需要通过代码来实现各种有趣的功能。今天,我将和大家分享一个简单的 C 语言程序,它通过动态地填充字符数组并实时显示,为我们带来一种独特的视觉效果。这个程序不仅展示了字符数组的使用,还涉及到了循环控制、字符串操作以及简单的系统调用。接下来,让我们一起深入了解一下这个程序的实现过程和运行效果。
程序代码
#include <stdio.h>
#include <string.h>
#include <Windows.h>
#include <stdlib.h>
int main()
{
char arr1[] = "Zjianzhen";
char arr2[] = "#########";
int left = 0;
size_t right = strlen(arr1) - 1;
while (left <= right)
{
arr2[left] = arr1[left];
arr2[right] = arr1[right];
printf("%s\n", arr2);
Sleep(1000);
system("cls");
left++;
right--;
}
printf("%s\n", arr2);
return 0;
}
程序功能
这个程序的核心功能是将一个字符数组 arr1
的内容逐步填充到另一个字符数组 arr2
中,并在填充过程中实时显示当前的状态。具体来说,它会从 arr1
的两端开始,逐个字符地将内容复制到 arr2
的对应位置,同时在每次复制后清除屏幕并显示当前的 arr2
内容。最终,当所有字符都被复制完成后,arr2
将与 arr1
完全一致。
代码解析
初始化部分
char arr1[] = "Zjianzhen";
char arr2[] = "#########";
这里定义了两个字符数组。arr1
是源数组,包含了我们想要复制的字符串 "Zjianzhen"
。而 arr2
是目标数组,初始时用 #
填充,长度与 arr1
相同。
变量定义
int left = 0;
size_t right = strlen(arr1) - 1;
left
和 right
是两个指针变量,分别指向 arr1
和 arr2
的两端。left
初始化为 0,指向数组的起始位置;right
初始化为 strlen(arr1) - 1
,指向数组的末尾。
循环逻辑
while (left <= right)
{
arr2[left] = arr1[left];
arr2[right] = arr1[right];
printf("%s\n", arr2);
Sleep(1000);
system("cls");
left++;
right--;
}
这是程序的核心循环部分。在每次循环中,程序会执行以下操作:
- 字符复制:将
arr1
中的第left
个字符和第right
个字符分别复制到arr2
的对应位置。 - 显示当前状态:通过
printf
函数输出当前的arr2
内容。 - 暂停与清屏:调用
Sleep(1000)
函数暂停 1 秒,然后通过system("cls")
清除屏幕,为下一次输出做准备。 - 指针移动:
left
指针向右移动一位,right
指针向左移动一位,继续处理下一对字符。
循环会一直执行,直到 left
大于 right
,即所有字符都被复制完成。
最终输出
printf("%s\n", arr2);
在循环结束后,arr2
已经完全复制了 arr1
的内容,此时程序会再次输出 arr2
,显示最终的结果。
运行效果
当运行这个程序时,你将看到屏幕上逐步显示 arr2
的内容。初始时,arr2
是由 #
填充的,随着程序的运行,arr2
的两端会逐渐被 arr1
的字符替换,直到最终完全显示为 "Zjianzhen"
。每次字符替换之间会有 1 秒的间隔,并且屏幕会在每次替换后清空,给人一种字符逐渐“填充”进数组的视觉效果。
总结
这个简单的 C 语言程序通过字符数组的操作和系统调用,实现了一个有趣的动态显示效果。它不仅展示了字符数组的基本操作,如字符复制和字符串长度计算,还通过循环控制和屏幕刷新,为程序增加了动态的视觉元素。通过这个程序,我们可以更好地理解字符数组的使用方法,以及如何通过简单的系统调用实现屏幕操作。希望这个程序能为你带来一些启发,也欢迎你在评论区分享你的想法和改进意见!