C++ 数组问题:围绕变量';arr';腐败 我正在编写一个函数,它请求数组,如果找到一个大写字母,则应该把整行转换成Capital字母。否则,它只打印函数。 运行main函数到函数检查大写字母的部分是可以的,我得到了标题中提到的错误

C++ 数组问题:围绕变量';arr';腐败 我正在编写一个函数,它请求数组,如果找到一个大写字母,则应该把整行转换成Capital字母。否则,它只打印函数。 运行main函数到函数检查大写字母的部分是可以的,我得到了标题中提到的错误,c++,multidimensional-array,runtime-error,C++,Multidimensional Array,Runtime Error,主要功能: #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 a

主要功能:

#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');

    }
#包括
#包括“FuncA.h”
#包括“printarr.h”
使用名称空间std;
void main()
{
字符选择;
做
{
库特科尔斯;
char arr[][COLS]={0};
for(int i=0;i>arr[i][j];
}
}
for(int i2=0;i2如果(arr[i2][j2]>=90 | | arr[i2][j2]您的
arr
声明等于
char-arr[1][COLS]
。第一个“维度”的任何非零索引都将被禁止

如果您想要在运行时设置大小的“数组”,请使用:

std::vector arr(cols,std::vector(rows));

您对
arr
的声明等于
char arr[1][COLS]
。第一个“维度”的任何非零索引都将被禁止

如果您想要在运行时设置大小的“数组”,请使用:

std::vector arr(cols,std::vector(rows));

欢迎使用堆栈溢出!听起来您可能需要学习如何使用一步一步地检查代码。有了一个好的调试器,您可以逐行执行程序,并查看它与预期的偏差。如果您要进行任何编程,这是一个必不可少的工具。进一步阅读:。欢迎使用堆栈溢出!听起来不错您可能需要学习如何使用a逐步完成代码。有了一个好的调试器,您可以逐行执行程序,并查看它与预期的偏差。如果您要进行任何编程,这是一个必不可少的工具。进一步阅读:。此外,根本不需要检查
cols
是否小于或等于
COLS
。此外,根本没有检查
COLS
是否小于或等于
COLS
#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);
            }
        }
    }



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