#include<stdio.h>
#include<string.h>
int main()
{
char arr1[]="Welcome to the 6088!!!!";
char arr2[]="#######################";
int left=0;
int right=sizeof(arr1)/sizeof(arr1[0])-2;
// int left=strlen(arr1)-1;
while(left<=right)
{
arr2[left]=arr1[left];
arr2[right]=arr1[right];
printf("%s\n",arr2);
left++;
right--;
}
return 0;
}
C语言对'\0'结束的相关处理:
1、字符数组的初始化,如果初值个数小于数组长度,则只将这些字符赋给数组中前面那些元素,其余的元素自动定为空字符(即'\0')。例如:char a[9]={'1','2','3','4','5','6','7','8'};中,初始化数值只提供了8个,但字符长度为9,因此,会自动在补充空字符(即'\0')。
2、字符串常量初始化数组。
例如:char c[ ]={‘c’,‘ ’,‘p’,‘r’,‘o','g','r','a','m'};可写为:char c[ ]={"C program"} 或去掉{}写为:char c[ ]="C program";注意:此时数组c的长度不是9,而是10。因为字符串常量的最后由系统加上一个'\0'。上面的初始化与下面的初始化等价。
在计算数组长度时我已知以下方法
1.使用sz=sizeof(arr)/sizeof(arr[0])
2.使用函数strlen() (#include<string.h>)
注意使用1方法会将字符串最后的'\0’一同计算
但2方法不会!!!!!
最后用2方法吧!!!
然后我也学会了字符串还能这样输入
当然这个程序还能更好!
如我们可以使它延时输出
#include<stdio.h>
#include<string.h>
#include<windows.h>
int main()
{
char arr1[]="Welcome to the 6088!!!!";
char arr2[]="#######################";
int left=0;
int right=sizeof(arr1)/sizeof(arr1[0])-2;
// int left=strlen(arr1)-1;
while(left<=right)
{
arr2[left]=arr1[left];
arr2[right]=arr1[right];
printf("%s\n",arr2);
Sleep(1000);
left++;
right--;
}
return 0;
}
这里值得注意的是Sleep()的参数单位是毫秒!!!!
还可以更好!
#include<stdio.h>
#include<string.h>
#include<windows.h>
#include<stdlib.h>
int main()
{
char arr1[]="Welcome to the 6088!!!!";
char arr2[]="#######################";
int left=0;
int right=sizeof(arr1)/sizeof(arr1[0])-2;
// int left=strlen(arr1)-1;
while(left<=right)
{
arr2[left]=arr1[left];
arr2[right]=arr1[right];
printf("%s\n",arr2);
Sleep(1000);
system("cls");
// 其中cls是执行系统命令的一个函数 是清空屏幕的意思
left++;
right--;
}
printf("%s\n",arr2);
return 0;
}