为什么运行后是全覆盖后面,课本不是这样讲的呀!谢谢!

来源:百度知道 编辑:UC知道 时间:2024/09/21 18:20:10
#include"stdio.h"
#include"string.h"
void main()
{
char a[30]="nice to meet you!";
strcpy(a+strlen(a)/2,"you");
printf("%s\n",a);
}

首先算一下strlen(a)/2,是8
所以strcpy(a+strlen(a)/2,"you");也就是
strcpy(a+8,"you");
复制过去时,会从a+8指向的单元开始覆盖,也就是a[9]
原来a[9]是指向字符'm'的,所以是从m开始覆盖
而且strcpy函数会将"you"字符串最后的'\0'也复制过去
所以覆盖后的字符串是这样的
nice to you'\0' you的形式
而输出字符串是遇到'\0'结束的
所以输出是
nice to you