• ベストアンサー

char fileno[8][128] = {"40ABC","40文

char fileno[8][128] = {"40ABC","40文字列" ,"60ABC","60文字列" ,"80ABC" ,"80文字列" ,"100ABC","100文字列"}; for( fileno = 0; fileno <= 8 ; ++ fileno ) { sprintf( filename, "%s.jpg", fileno[i]) ; //画像読み込み src_img = cvLoadImage (filename, CV_LOAD_IMAGE_COLOR); //画像読み込み } とすると%sの後に(null)と入り、 sprintfで読み込まれたときに 40ABC(null).jpg のようになってしまいます。 これを解消するにはどうすればいいのでしょうか。 よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • trapezium
  • ベストアンサー率62% (276/442)
回答No.2

書き写し間違いかもだが、< 8 それと fileno は stdio.h の fileno(FILE *) と名前がかぶるので避けた方が無難。 場合によっては const char *foo[] = { "bar", ..., NULL }; の方が楽。 あとしいて言うなら、filename のバッファサイズの注意と snprintf() の推奨。

mitti0157
質問者

お礼

<8ですね。 間違っていました。 filenoという関数があるんですね。 チェック入れてくださった場所は 書き換えておこうと思います。 snprintfというのがあったんですね。 これを使って試してみます! まだまだ勉強不足で、大変参考になります。 ありがとうございました!

その他の回答 (2)

  • asuncion
  • ベストアンサー率33% (2127/6289)
回答No.3

>書き間違えてしましました。 投稿に際しては、手元のソースコードを手で打ち直すのではなく、 そのままコピー&ペーストしていただけませんか? その方が楽でしょ?

mitti0157
質問者

お礼

できる限りコピー&ペーストしてるんですが、 今回sprintfの中に関数を3つ入れていたので、 質問用に簡素化しようと 書き換えてしまったのが原因です。 今後コンパイルしてから投稿します。 あと、失礼と存じますが、 できれば質問の主旨に沿える 内容を頂ければ助かります。 回答ありがとうございました。

  • asuncion
  • ベストアンサー率33% (2127/6289)
回答No.1

for文で、繰り返しを制御するための変数が filenoであるのは何故でしょうか。

mitti0157
質問者

補足

申し訳ありません。 書き間違えてしましました。 for文でまわすのは、 filenoではなくiです。

関連するQ&A