为什么我输出不了字符(关键词-char)

c++
为什么我输出不了字符

#include<bits/stdc++.h>
using namespace std;
const int N=32767;
int n,m;
char lei[N][N];
int dx[8]={0,0,-1,1,-1,1,-1,1};
int dy[8]={1,-1,0,0,1,1,0,0};
int main(){
    cin>>n>>m;
    for(int i=1;i<=n;i++){
        for(int j=1;j<=m;j++){
            cin>>lei[i][j];
            cout<<lei[i][j];
        }
    }/*for(int i=1;i<=n;i++){
        for(int j=1;j<=m;j++){
            if(lei[i][j]=='*'){
                cout<<'*';
            }
        }cout<<endl;
    }*/
    
    return 0;
}

需要先输入n和m的值,然后再输入一行整数,接着才会将这行整数输出出来。

测试代码如下:

 
#include<bits/stdc++.h>
using namespace std;
const int N=32767;
int n,m;
char lei[N][N];
int dx[8]={0,0,-1,1,-1,1,-1,1};
int dy[8]={1,-1,0,0,1,1,0,0};
int main(){
    cin>>n>>m; // 先输入n和m的值 
    for(int i=1;i<=n;i++){
        for(int j=1;j<=m;j++){
            cin>>lei[i][j]; // 接着输入一行整数 ,或者直接一行输入所有行列的整数,接着就会输出全部输入的整数 
            cout<<lei[i][j]<<" ";  //然后才会显示这行整数 
        }
        cout<<endl;
    }/*for(int i=1;i<=n;i++){
        for(int j=1;j<=m;j++){
            if(lei[i][j]=='*'){
                cout<<'*';
            }
        }cout<<endl;
    }*/
    
    return 0;
}
 

【以下回答由 GPT 生成】

问题出在你定义的字符数组 lei 的大小上。你给 lei 数组分配了 32767*32767 这么大的内存空间,这会导致栈溢出的问题。栈空间通常很小,而且分配的内存空间也有限制。所以你的程序无法执行成功,也就无法输出字符。

解决方案是修改 lei 数组的大小,可以根据实际需要来定义大小或者使用动态内存分配。另外,你还可以确保输入的 nm 不超过数组 lei 的大小,以避免溢出。

以下是修改后的代码示例:

#include <iostream>
#include <vector>
using namespace std;

int main() {
    int n, m;
    cin >> n >> m;

    // 使用vector来代替字符数组
    vector<vector<char>> lei(n, vector<char>(m));

    // 读入字符并输出
    for(int i=0; i<n; i++){
        for(int j=0; j<m; j++){
            cin >> lei[i][j];
            cout << lei[i][j];
        }
        cout << endl;
    }

    return 0;
}

这样修改后,你就能够成功输出字符了。



【相关推荐】



如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^