#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/

10-10 11:09