2017-03-16 18 views
1

文字 'C'で塗りつぶされるインデックス(2,2)を除いて、Xで塗りつぶされたCで2D配列を初期化しようとしています。しかし、以下のコードを実行すると、(2,2)に 'C'が表示されるだけでなく、何らかの理由でインデックスに 'C'が表示されます(1,9) )。2D配列が正しい出力を出力しない

幅と高さの値を変更しようとしましたが、時々動作することに気付きました。たとえば、高さ= 10、幅= 10とすると、適切なスロットに「C」が1つのみ表示され、正しい出力が得られます。

私はCプログラミングに新しく、なぜ正しい出力が得られないのか分かりません。どんな助けでも大歓迎です!

int width = 10; 
int height = 7; 
int x = 2; 
int y =2; 
int limit = 3; 

//initialising 2D array 
char board[width][height]; 
for(int i = 0; i < height; i++){//rows 
    for (int j = 0; j < width; j++){//cols 
     if(i == y && j == x){ 
      board[y][x] = 'C'; 
     } 
     else{ 
      board[i][j] = 'X'; 
     } 
    } 
} 
//printing 2D array 
for(int i = 0; i < height; i++){//rows 
    for (int j = 0; j < width; j++){//cols 
     printf("%c ", board[i][j]); 
    } 
    printf("\n"); 
} 

Sample output

+1

を必要とする:'のmemset(ボード、 'X'、幅*高さ)。ボード[y] [x] = 'C'; ' – Dmitri

+1

残りの部分が 'X'である間に、いくつかの位置で 'C'もしそうなら、_memset()_が良いでしょう。それを使用してすべての値を 'X'に設定し、条件を使用して配列内の特定の値を別の値に設定します。 – Ravin

+0

将来、常に出力_as text_をコピーしてコピーしてください。テキストを表示するためにイメージを使用しないでください。 –

答えて

2

あなたは間違った配列宣言を得ました。 代わりの

char board[width][height]; 

あなたはそれがchar` `の配列なので、あなたにもちょうど行うことができます

char board[height][width]; 
/*   Rows Cols */ 
+0

ああ仲間の仲間。私は単純なものを見落としたことを知っていた。ありがとう:) – Anonymous

関連する問題