【发布时间】:2018-12-16 20:08:31
【问题描述】:
如何将所有大小为 5 的 str2 存储在大小仅为 2 的 str1 中?
我是在入侵系统吗?
教科书状态确保str1必须有一个更大的值来存储str2,但是为什么呢?
#include <iostream>
#include <cstring>
int main()
{
char str1[2] = {'B', '\0'};
char str2[5] = {'c', 'o', 'l', 'l', '\0'};
std::strcat(str1, str2);
std::cout << str1 << std::endl;
return 0;
}
【问题讨论】:
-
你有未定义的行为,就这么简单。
-
是的,你是。这两个变量在堆栈上,您正在覆盖 str2 的一部分。不要那样做,这就是
string的用途。 -
未定义行为是什么意思?
-
超出数组边界是未定义的行为。
-
教科书状态以确保str1必须有一个更大的值来存储s2 -- 教科书之所以这么说是因为如果它你将有一个损坏的程序不够大。
标签: c++ arrays string function