ズザギコの座標(?)を使った移動

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
ダッシュ

ズザギコの座標(?)を使った移動

#1

投稿記事 by ダッシュ » 13年前

友達から教えてもらったconstを使ってズザギコをやってみようと思います。で、早速エラーなんですが、何がまずいんでしょう?警告みても初期化子が多すぎるとか出ててさっぱりです。

#include<stdio.h>
#include<windows.h>

const char ZUZA[3][49]={
" ∧∧ ",
" ⊂(゜Д゜⊂⌒`つ≡≡≡"
};

int main()
{
int i=0;
while(1){
puts(ZUZA[3]);
Sleep(80);
i++;
if(i==20)i-=20;
}
}

管理人

Re:ズザギコの座標(?)を使った移動

#2

投稿記事 by 管理人 » 13年前

見た感じ初期化の数が多すぎることは無いですけど、
投稿の時に、半角スペースが省略されてるのかもしれませんね。
一度、ソースを
<pre>

</pre>
で囲んで投稿してもらえませんか?
<>は半角で入力してください。
後、配列は2行しかないのに3行分宣言されています。
そして、puts関数の引数がおかしいです。ここはポインタでなければいけません。
書くのは
puts(ZUZA[0]);
puts(ZUZA[1]);
puts(ZUZA[2]);
しか指定できません。
数字の部分を変数にしてもOKです。
配列のポインタの話は次に説明します。

管理人

Re:ズザギコの座標(?)を使った移動

#3

投稿記事 by 管理人 » 13年前

int a[5];

と宣言すると
a[0]
a[1]
a[2]
a[3]
a[4]
という名前の5つの変数が用意されます。
で、この配列はaという名前で総称することが出来ます。
a[0]と具体的な配列の中の一つをさすと、一つの変数をさすことになりますが、
その総称であるaと示すと、配列のポインタを示すものです。
つまり配列のある場所、住所ですね。
putsにはその住所を引数として渡す必要があります。
ですから、具体的な配列要素を示してはいけません。

2次元配列の場合は、その上位の要素を示します。つまり

int a[5][10];

と宣言すると、たとえばa[0][0]は変数ですが、a[0]は
a[0][0],a[0][1]....a[0][9]
を総称する名前、ポインタになります。

ダッシュ

Re:ズザギコの座標(?)を使った移動

#4

投稿記事 by ダッシュ » 13年前

うぉぉ・・・。ポインタですか・・・。ちょうど行き詰ってたとこです。ポインタ勉強しなおしてからまた来ます。(どれくらいかかるか分かりませんが・・・。)

ついでにソースです。
#include<stdio.h>
#include<windows.h>

const char ZUZA[3][49]={
"                                        ∧∧              ",
"                                    ⊂(゜Д゜⊂⌒`つ≡≡≡"
};

int main()
{
	int i=0;
	while(1){
		puts(ZUZA[3]);
		Sleep(80);
		i++;
		if(i==20)i-=20;
	}
}


psうわ・・・。アイコン変えずに投稿したから、最初の投稿のとこ「お礼」になってる・・・。

管理人

Re:ズザギコの座標(?)を使った移動

#5

投稿記事 by 管理人 » 13年前

これは初期化子多すぎですよ^^;
49バイト分のスペースを確保せよ
と配列を宣言しているのに
59バイト分も中身に格納しようとしています。

「お礼」を「質問」に変更しておきましたよ^^

ポインタは、難しいと思わなくても、putsで使う概念くらい簡単ですから、大丈夫ですよ^^

さっきの説明じゃわかりにくかったかな?

とりえあえず、自分で

int a[10];

と宣言して配列を作ったとき、
a

a[0]
では、どう意味が違うのか、抑えることが重要です!

GPGA

Re:ズザギコの座標(?)を使った移動

#6

投稿記事 by GPGA » 13年前

> [color=00B0FF">const[/color] [color=00B0FF]char[/color] ZUZA[3][49]={
> "                                        ∧∧              ",
> "                                    ⊂(゜Д゜⊂⌒`つ≡≡≡"
> };
初期化子がわかりにくい配列を扱う場合には、以下のようにすると勝手に初期化してくれますよ~
なお、ZUZAの使い方は二次元配列の時と何も変わりません。
[color=00B0FF">const[/color] [color=00B0FF]char[/color]* ZUZA[3] = {
"                                        ∧∧              ",
"                                    ⊂(゜Д゜⊂⌒`つ≡≡≡"
};

閉鎖

“C言語何でも質問掲示板” へ戻る