环境是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版权协议,转载请附上原文出处链接和本声明。