之所以使用i<=n,就是为了将那个结束符也拷贝过去,否则输出str2的时候,会一直输出直到遇见第一个'\0',也就是越界了。至于输出的为什么是'烫',因为越界后内存中的数是随机的,可能会被解析为汉字~~
函数原型为:void *memcpy(
void *dest,
const void *src,
size_t count
)
其中:
dest:
目标内存缓冲区
src:
源内存缓冲区
count:
需要拷贝的字节数
通过memcpy()函数无法确定目标缓冲区的大小,目标缓冲区一般是一个已分配好空间的指针,在分配该空间时一般要先考虑源内存缓冲区的大小,宁愿多分配些空间(即,一般都要分配得比源缓冲区大),第三个参数为源缓冲区中实际需要拷贝的数据的字节数.
#include<stdio.h>main(){
char a[200]="abcdefghijklmn"
char b[200]
char *p1=a,*p2=b
int n
printf("原字符串为:\n%s\n",a)
printf("输入n:")
scanf("%d",&n)
do{
*p2=*p1+(n-1)*sizeof(char)
*p2++
*p1++
}while(*p1!='\0')
printf("复制的字符串:\n%s\n",b)
getch()
}