• ベストアンサー

配列

配列を使って10×10のマス(□)を表示させたいのですが、型が違いますとエラーが出てしまいます。 どこが違うのかわかりません。 わかる人がいたら教えてください。 #include<stdio.h> main() { signed char land[10][10]; int i, j; for(i=0; i<10; i++){ for(j=0; j<10; j++){ land[i][j] = □; printf("%c",land[i][j]); } printf("\n"); } }

質問者が選んだベストアンサー

  • ベストアンサー
  • qcelp
  • ベストアンサー率38% (20/52)
回答No.3

#2です。 2番目の例が間違っていたので訂正します。 ただ結構変わっちゃってますけど #include<stdio.h> #include<string.h> main() { char land[10][30]; int i, j; for(i=0; i<10; i++) { for(j=0; j<30; j+=3) { strcpy( &land[i][j], "□"); printf("%s",&land[i][j]); } printf("\n"); } }

007xyz
質問者

お礼

出来ました。 strcpy( &land[i][j], "□"); を使えば良かったのですね。 ありがとうございました。

その他の回答 (3)

回答No.4

何故わざわざ配列に入れなければならないのかがよくわからないんですけど・・・。 #2 の方とほとんど同じですけど、「10X10」ということにこだわれば、↓こういう感じでしょうか。 #include <stdio.h> #include <string.h> void main(void) {   unsigned char land[10][10][3];   int i, j;   for(i=0; i<10; i++){     for(j=0; j<10; j++){       strcpy((char *)land[i][j], "□");       printf("%s",land[i][j]);     }     printf("\n");   } }

  • qcelp
  • ベストアンサー率38% (20/52)
回答No.2

□は全角文字です。 そのため、半角文字の1文字の型であるcharと違うので、エラーが出ます。 対処法はcharの型をw_charに変えるとか、 char land[10][10]をchar land[10][30]に j<10をj<30に j++をj+=3に変えるとか □自体を半角文字に変えるとかかな。 2番目のは美しくないですけど

  • taka_tetsu
  • ベストアンサー率65% (1020/1553)
回答No.1

>型が違いますとエラーが出てしまいます。 何行目のどこと出ているはずですが。 >land[i][j] = □; これってなんですか? char型に入れられるのは1バイトのみです。 というか、上の書き方ですと文字でも文字列でもなんでもないんですけども。 とりあえず、□はあきらめて、別の半角英数を land[i][j] = '0'; こんな感じに指定して表示させてみましょう。

007xyz
質問者

お礼

ほかの文字は出ました。 □を表示させるにはどうすればいいでしょうか?

関連するQ&A