#include
#include
int main()
{
char arr[]={"南朝四百八十四,多少楼台烟雨中"};
char arr2[]={"##############################"};
int left = 0;
/*int sz = sizeof(arr) / sizeof(arr[0]);*/
int right = strlen(arr) - 1;
while (left <= right)
{
arr2[left] = arr[left];
arr2[right] = arr[right];
printf("%s\n", arr2);
left++;
right--;
}
return 0 ;
}
怎么个不对齐呢?
控制台用等宽字体,善于使用 \t 制表符。
由于你定义的数组arr和arr2数组大小不一样。
且arr数组是44个字符,而arr2数组只有29个字符。
由于arr2数组空间小于aar数据空间,因此前几次打印只有left可以打印,right超出arr2数组范围,会出现数组越界,因此左右不会对称。
且由于arr数组定义了中文字符串,中文字符占用2个字节,而left和right是+1和-1.中文打印也会出现乱码。
因此建议你做如下修改
1、保证arr2数组空间大小大于等于arr数组空间大小;
2、arr数组为英文字符,这样便于观察,不会产生乱码。
这个要考虑源码中的中文编码问题
如果源码保存为utf-8编码,那arr1的strlen应该是44,
如果保存为GB2312编码,那arr1的strlen应该是29, 与arr2是同等长度。
运行结果如下: