C++ 数组的输出与输入不同

C++ 数组的输出与输入不同,c++,arrays,for-loop,multidimensional-array,C++,Arrays,For Loop,Multidimensional Array,我正在尝试输入 1 HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH 但出于某种原因,我得到了这个作为我的输出 hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh 它应该输出相同的东西,所有的H,但不是它的输出少和一个随机的I。那是什么 #include <iostream> using namespace std; const int arrayElements = 40; int main() { in

我正在尝试输入

1
HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
但出于某种原因,我得到了这个作为我的输出
hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh

它应该输出相同的东西,所有的H,但不是它的输出少和一个随机的I。那是什么

#include <iostream>

using namespace std;

const int arrayElements = 40;
int main()
{
    int lineInputs = 0;

    cin >> lineInputs;

    char mySexyArray [lineInputs-1][arrayElements-1];
    int whatever =0;
    for (int i=0;i<lineInputs;i++)
    {
       // cin >> whatever;
        for (int j=0;j<arrayElements;j++)
        {
           cin >>mySexyArray[i][j];
        }
    }




    for (int i=0;i<lineInputs;i++)
    {
        for (int j=0;j<arrayElements;j++)
        {
          cout << mySexyArray[i][j]<<"";
        }
        cout << endl;
    }

    return 0;
}
#包括
使用名称空间std;
常数int数组元素=40;
int main()
{
int-lineInputs=0;
cin>>线路输入;
char mySexyArray[lineInputs-1][arrayElements-1];
int=0;
对于(int i=0;i>which;
对于(int j=0;j>mySexyArray[i][j];
}
}

对于(int i=0;i您正在覆盖数组的边界,从而导致未定义的行为
当您有一个行为未定义的程序时,它可以向您显示任何输出

您的数组声明是:

char mySexyArray [lineInputs-1][arrayElements-1];
循环运行时:

 for (int i=0;i<lineInputs;i++)
    {
        for (int j=0;j<arrayElements;j++)

for(int i=0;i当您为
lineInputs
输入
1
时,
lineInputs-1
的值是多少?如何声明char mySexyArray[lineInputs][arrayElements]当lineInputs不是常量时,它应该给出一个error@StackHeapCollision:这是可以理解的,大多数编译器通过扩展支持可变长度数组,并且不是每个人都使用
-pedantic
编译这些代码,这是他们理想的选择。您是否考虑过使用
std::vector
而不是C样式的数组?这会使您的代码更整洁,更不容易出现逐个错误和缓冲区溢出。