- ベストアンサー
配列
配列を使って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"); } }
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
#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"); } }
その他の回答 (3)
- tsukasa-12r
- ベストアンサー率65% (358/549)
何故わざわざ配列に入れなければならないのかがよくわからないんですけど・・・。 #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)
□は全角文字です。 そのため、半角文字の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)
>型が違いますとエラーが出てしまいます。 何行目のどこと出ているはずですが。 >land[i][j] = □; これってなんですか? char型に入れられるのは1バイトのみです。 というか、上の書き方ですと文字でも文字列でもなんでもないんですけども。 とりあえず、□はあきらめて、別の半角英数を land[i][j] = '0'; こんな感じに指定して表示させてみましょう。
お礼
ほかの文字は出ました。 □を表示させるにはどうすればいいでしょうか?
お礼
出来ました。 strcpy( &land[i][j], "□"); を使えば良かったのですね。 ありがとうございました。