Re: ファイルの読み込み時 ( No.1 ) |
- 名前:犬福 日時:2007/07/10 17:33
Cでは文字列は数値のように「+」では簡単に結合できません。
そのやり方だと文字列を指すポインタ同士の足し算になってしまうのでエラーとなります。
じゃあどうするかというと色々やり方はありますけど、
以下のようなやり方なんてどうでしょうか?
enum{ MOUNTAIN, RIVER, SEA };
char *bg_img[] = {
"bg_01",
"bg_02",
"bg_03",
};
int img;
int bg_num = MOUNTAIN;
char file_name[256];
sprintf(file_name, bg_img[bg_num], ".bmp");
img = LoadGraph(file_name);
まず文字列を格納するバッファを用意してから、
sprintfでバッファにファイル名と拡張子をコピーしてます。
|
Re: ファイルの読み込み時 ( No.2 ) |
- 名前:ナッサム 日時:2007/07/10 19:46
なるほど、sprintfをすっかり忘れていました。
"bg_01.bmp"
"bg_02.bmp"
とすればいい所ですが、ファイル名を使いまわしたかったもので。
これで解決できました。ありがとうございました。
|
Re: ファイルの読み込み時 ( No.3 ) |
- 名前:雪 日時:2007/07/10 23:53
蛇足ですが、文字列の結合にはstrcatなどもありますよ。
|
Re: ファイルの読み込み時 ( No.4 ) |
- 名前:優柔不断 日時:2007/07/11 07:53
すいません、ケチつけるようで、この場合、sprintf(filename,"%s%s",bg_ing[bghnum],".bmp");
としたほうが、確実です。
|
Re: ファイルの読み込み時 ( No.5 ) |
- 名前:犬福 日時:2007/07/11 14:49
>>優柔不断
確実ってよりそっちが正解です
テスト用に書いたコードはそうしてたのに・・orz
ナッサムさんすみませんm(_ _)m
|
Re: ファイルの読み込み時 ( No.6 ) |
- 名前:優柔不断 日時:2007/07/27 14:23
すいませんでした、前のプログラムソースでは、
第3引数は bg_ing[bg_num] の間違いでした。
迷惑かけて本当に申し訳ありませんでした。
また、これは少し余計ですが、sprintf()関数を、
使うのでしたら、以下のような方法もあります。↓
enum{ MOUNTAIN, RIVER, SEA };
int img;
int bg_num = MOUNTAIN;
char file_name[256];
sprintf(file_name,"bg_%02d%s",bg_num,".bmp");
img = LoadGraph(file_name);
この方法は、sprintf()関数でしか使えませんので、
ご注意ください。
|
|