错误原型:
char src[5] = {10, 0, 15};
char dst[5];
strcpy(dst, src,);
std::cout << dst[0] << " " << dst[1] << " " << dst[2] << "\n";
大家会以为输出会是10 0 15吧
不过答案却是10 0 0
原因:
0就是'\0',这个问题就是由数据0引起的。strcpy,strncpy拷贝字符串都是碰到'\0'就结束拷贝,如果是这种情况就会导致数据截断
解决方案:
运用memcpy(dst, src, 5);就会达到预期效果
总结:
在我们用char型buffer存储数据时,难免会碰到数据0,这时未避免错误,建议使用memcpy,这样问题就解决了