#include<stdio.h>
#include<string.h>
int main(){
char a[10]={0};
char b[10]={'a',0,'b','c'};
strcpy(a,b);
printf("%s",a); //输出为a
return 0;
}
a[10]存储的全为0(‘\0’),b[10]剩下的也默认为0,本身为字符数组,按照字符串处理的时候,strcpy一一比较,到b[1]的时候碰到0,以为结束了,存在安全问题
正确方法如下:
按照数值来处理:
for(int i=0;i<10;i++){
a[i]=b[i];
}
使用内存拷贝:#include<memory.h>
memcpy(a,b,10*sizeof(char));//memspy(目的地址,原地址,拷贝字节数)
for(int i=0;i<10;i++){
printf("%c",a[i]);
}