ページ 11

文字列の連結方法について

Posted: 2013年3月13日(水) 01:05
by Xoke
こんばんわ。
初めてトピックを立てさせていただきます。

拙いもので申し訳ないですがプログラムの一部を見ていただきたいです。
以下のようにfor文中でiの値を変化させながらStage数を変えて画像を格納させていきたいのですがを変えていきたいのですが、
このように処理を加えたところ、ビルドはできるのですが実行してすぐに*.exeは動作を停止しましたと表示され止まってしまいます。
おそらく文字列の連結の関数などの引数がうまく渡せていないのだと思います。詳しいやり方を教えていただきたいです。
あと一応
 'itoa' の宣言を確認してください。
というようなエラーメッセージも出ていますが実行はできています。この意味も教えていただきたいです。
よろしくお願いいたします。

char ch[]="1";

for(i=0; i<=6; i++){
    itoa(i,ch,10);
mpara.image=LoadGraph(strcat("pictures/stage/stage",strcat(ch,"sam.png")));
}

Re: 文字列の連結方法について

Posted: 2013年3月13日(水) 06:11
by box
私だったら、strcatの連続ではなく、sprintfを使います。
itoaの件は、標準関数ではないのでわかりません。

コード:

char filename[80];    // サイズは適切な値にすること

for (i = 0; i <= 6; i++) {
    sprintf(filename, "pictures/stage/stage%dsam.png", i);
    mpara[i].image = LoadGraph(filename);
}

Re: 文字列の連結方法について

Posted: 2013年3月13日(水) 08:00
by みけCAT

コード:

strcat("pictures/stage/stage",strcat(ch,"sam.png"))
は、constの可能性がある文字列リテラルを書き換えることになるので、おかしなことになると思います。

chの要素数も少なすぎます。
アクセス違反にならない方がラッキーです。