这里有代码
char buf[2] = { 0 };
memcpy(buf, “12”, 2);
cout << buf << endl;
实际打印出来的却还有好多其他字符,例如系统时间,还有身份证号什么的,
会不会是编译器优化的后果。
编译器g++ centos环境
char buf[2] = { 0 };
memcpy(buf, “12”, 2);
cout << buf << endl;
实际打印出来的却还有好多其他字符,例如系统时间,还有身份证号什么的,
会不会是编译器优化的后果。
编译器g++ centos环境
解决方案
7
char buf[3] = { 0 };
7
memcpy(buf, “12”, 3)
7
正解,没有0结束符,打印超出内存范围
14
字符串要注意最后的”\0″
6
是C/C++里默认的协议,用char *处理字符串都是0结尾的。
12
假如你不确定长度,就定义一个最大的长度。字符串没有结束符除非取定长