#include <iostream>
using namespace std;
typedef struct
{
char streetName[5];
} RECORD;
int main()
{
RECORD r;
cin >> r.streetName;
cout << r.streetName << endl;
}
运行该程序时,如果输入的字符数超过5个,则输出将显示输入的整个字符串。它不会截断为5个字符。这是为什么?
我如何才能使其正常工作?
最佳答案
您正在溢出缓冲区。在streetName之后放置另一个char数组,您可能会发现它获取其余字符。现在,您只是在破坏堆栈中的某些内存。
关于c++ - 为什么这个C++ char数组似乎能够容纳更多的大小?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2889337/