知りたいこと
string G[h]に対してG[x][y]という1文字
ごとの入力をすると、20×20くらいのサイズからsegmentationfaultになる。
その理由が知りたいです。宜しくお願いします。
試したこと
文字列
をまとめて入力する場合には同じサイズでセグフォにならなかった。e.g.for (int i = 0; i < h; i++) cin >> G[i]
以下、考察
- stringでの入力ではなく、G[y][x]のようなcharの入力だと問題があるようだ
- G[y][x]のセグフォは、(x,y)=(0,1)の時に起きたが、この配列は存在するはずなので、なぜセグフォになるのか想像がつかない
- G[y][x]のようなcharの入力だとデバッガ上はG[h]に値が入力されていないが、g[y][x]で値が標準出力出来て変なことをしている気がする
エラー画面
コード
c++
1#include <bits/stdc++.h> 2#define rep(i, n) for (int i = 0; i < (n); ++i) 3using namespace std; 4using ll = long long; 5using P = pair<int, int>; 6 7 8int main() { 9 int h, w; 10 cin >> h >> w; 11 12 string G[h]; 13 //for (int i = 0; i < h; i++) cin >> G[i]; 14 15 //入力の生成 16 srand(time(NULL)); 17 for(int y = 0; y < h; ++y) { 18 for(int x = 0; x < w; ++x) { 19 if(rand()%10==0) G[x][y]='.'; 20 else G[x][y]='#'; 21 } 22 } 23 cout << endl; 24 rep(i,h){ 25 rep(j,w) {cout << G[i][j];} 26 cout << endl; 27 } 28}
回答5件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/07/08 01:35
2020/07/08 01:38
2020/07/08 01:44 編集
2020/07/08 01:51