gpt4 book ai didi

c++ - 数组问题 : Stack around the variable 'arr' was corrupted

转载 作者:行者123 更新时间:2023-11-27 22:44:59 25 4
gpt4 key购买 nike

我正在编写一个请求数组的函数,如果它找到一个大写字母,它应该将整行换成大写字母。否则,它只是打印函数。运行 main 函数直到函数检查大写字母的部分没问题,我得到了标题中提到的错误。

主要功能:

#include <iostream>
#include "FuncA.h"
#include "printarr.h"
using namespace std;

void main()
{
char choice;
do
{
cout << "Welcome, choose a function to continue: " << endl << "\n A for Uppercasing arrays. \n B for Column sum. \n C for String copying. \n D for exit" << endl;
cin >> choice;
switch (choice)


case 'A':
funca();

}
while (choice != 'D');

}

有问题的函数:

#include <iostream>
#include "FuncA.h"
#include "printarr.h"
using namespace std;

void funca()
{
int rows = 0, cols = 0; //init
cout << "how many rows? ";
cin >> rows;
cout << "\n how many cols? ";
cin >> cols;
char arr[][COLS] = {0};


for (int i = 0; i < cols; i++) // input
{
for (int j = 0; j < rows; j++)
{
cin >> arr[i][j];
}
}

for (int i2 = 0; i2 < cols; i2++) // capcheck and printing if caps not detected
{
for (int j2 = 0; j2 < rows; j2++)
{
if (arr[i2][j2] >= 90 || arr[i2][j2] <= 65)
{
printarr(arr, rows, cols);
}
}
}



}

我该如何解决这个问题?我尝试更改 COLS 的大小(大小在 .h 文件中定义)但是没有用。

最佳答案

arr 的声明等于 char arr[1][COLS]。第一个“维度”的任何非零索引都将越界。

如果你想要一个在运行时设置大小的“数组”,那么使用 std::vector :

std::vector<std::vector<char>> arr(cols, std::vector<char>(rows));

关于c++ - 数组问题 : Stack around the variable 'arr' was corrupted,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44258623/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com