数组的输出与输入不同

output of array is different from input

本文关键字:输入 输出 数组      更新时间:2023-10-16

我正在尝试输入

1
HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH

,但由于某种原因,我得到这个作为我的输出HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHIHHH

它应该在所有的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;
}

您正在覆盖数组的边界,导致未定义行为
当你有一个具有未定义行为的程序时,它可以显示任何输出。

你的数组声明是:

char mySexyArray [lineInputs-1][arrayElements-1];

当你的循环运行时:

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

数组下标从0开始,因此只是写入不属于您的数组的内存