友達から教えてもらった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:ズザギコの座標(?)を使った移動
見た感じ初期化の数が多すぎることは無いですけど、
投稿の時に、半角スペースが省略されてるのかもしれませんね。
一度、ソースを
<pre>
と
</pre>
で囲んで投稿してもらえませんか?
<>は半角で入力してください。
後、配列は2行しかないのに3行分宣言されています。
そして、puts関数の引数がおかしいです。ここはポインタでなければいけません。
書くのは
puts(ZUZA[0]);
puts(ZUZA[1]);
puts(ZUZA[2]);
しか指定できません。
数字の部分を変数にしてもOKです。
配列のポインタの話は次に説明します。
投稿の時に、半角スペースが省略されてるのかもしれませんね。
一度、ソースを
<pre>
と
</pre>
で囲んで投稿してもらえませんか?
<>は半角で入力してください。
後、配列は2行しかないのに3行分宣言されています。
そして、puts関数の引数がおかしいです。ここはポインタでなければいけません。
書くのは
puts(ZUZA[0]);
puts(ZUZA[1]);
puts(ZUZA[2]);
しか指定できません。
数字の部分を変数にしてもOKです。
配列のポインタの話は次に説明します。
Re:ズザギコの座標(?)を使った移動
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]
を総称する名前、ポインタになります。
と宣言すると
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:ズザギコの座標(?)を使った移動
うぉぉ・・・。ポインタですか・・・。ちょうど行き詰ってたとこです。ポインタ勉強しなおしてからまた来ます。(どれくらいかかるか分かりませんが・・・。)
ついでにソースです。
psうわ・・・。アイコン変えずに投稿したから、最初の投稿のとこ「お礼」になってる・・・。
ついでにソースです。
#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:ズザギコの座標(?)を使った移動
これは初期化子多すぎですよ^^;
49バイト分のスペースを確保せよ
と配列を宣言しているのに
59バイト分も中身に格納しようとしています。
「お礼」を「質問」に変更しておきましたよ^^
ポインタは、難しいと思わなくても、putsで使う概念くらい簡単ですから、大丈夫ですよ^^
さっきの説明じゃわかりにくかったかな?
とりえあえず、自分で
int a[10];
と宣言して配列を作ったとき、
a
と
a[0]
では、どう意味が違うのか、抑えることが重要です!
49バイト分のスペースを確保せよ
と配列を宣言しているのに
59バイト分も中身に格納しようとしています。
「お礼」を「質問」に変更しておきましたよ^^
ポインタは、難しいと思わなくても、putsで使う概念くらい簡単ですから、大丈夫ですよ^^
さっきの説明じゃわかりにくかったかな?
とりえあえず、自分で
int a[10];
と宣言して配列を作ったとき、
a
と
a[0]
では、どう意味が違うのか、抑えることが重要です!
Re:ズザギコの座標(?)を使った移動
> [color=00B0FF">const[/color] [color=00B0FF]char[/color] ZUZA[3][49]={ > " ∧∧ ", > " ⊂(゜Д゜⊂⌒`つ≡≡≡" > };初期化子がわかりにくい配列を扱う場合には、以下のようにすると勝手に初期化してくれますよ~
なお、ZUZAの使い方は二次元配列の時と何も変わりません。
[color=00B0FF">const[/color] [color=00B0FF]char[/color]* ZUZA[3] = { " ∧∧ ", " ⊂(゜Д゜⊂⌒`つ≡≡≡" };