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
数组的大小,可以根据实际需要来定义大小或者使用动态内存分配。另外,你还可以确保输入的 n
和 m
不超过数组 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;
}
这样修改后,你就能够成功输出字符了。
【相关推荐】