sizeof与strlen的区别,演示多个字符从两端移动,向中间汇聚。
//w######################!
//we####################!!
//wel##################!!!
//welc################!!!!
//welco##############!!!!!
//welcom############!!!!!!
//welcom ##########!!!!!!!
//welcom t########e!!!!!!!
//welcom to######me!!!!!!!
//welcom to ####ome!!!!!!!
//welcom to m##home!!!!!!!
//welcom to my home!!!!!!!
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main(void) {
char arr1[] = "welcom to my home!!!!!!!";
char arr2[] = "########################";
int left = 0;
//int right = strlen(arr1)-1;
//strlen 是一个库函数,计算传进来的字符串的长度,以 ‘\0’结尾。
int right = (sizeof(arr1)/sizeof(arr1[0]))-2;
//sizeof 是一个运算符,它计算的是传进来的指针在内存中所占空间大小,在编译时就已经获得了结果
//一般而言后者的长度会比前者多1。
//所以用sizeof 运算是要多减一。
//如果理解不过来为什么right = 23,但实际字符数组arr1中有24个元素?
//因为数组第一个元素是从0开始的。
while ( left <= right) {
arr2[left] = arr1[left];
arr2[right] = arr1[right];
printf("%s\n",arr2);
left ++;
right --;
}
system("pause");
return 0;
}