- ベストアンサー
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 のようになってしまいます。 これを解消するにはどうすればいいのでしょうか。 よろしくお願いします。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
書き写し間違いかもだが、< 8 それと fileno は stdio.h の fileno(FILE *) と名前がかぶるので避けた方が無難。 場合によっては const char *foo[] = { "bar", ..., NULL }; の方が楽。 あとしいて言うなら、filename のバッファサイズの注意と snprintf() の推奨。
その他の回答 (2)
- asuncion
- ベストアンサー率33% (2127/6289)
>書き間違えてしましました。 投稿に際しては、手元のソースコードを手で打ち直すのではなく、 そのままコピー&ペーストしていただけませんか? その方が楽でしょ?
お礼
できる限りコピー&ペーストしてるんですが、 今回sprintfの中に関数を3つ入れていたので、 質問用に簡素化しようと 書き換えてしまったのが原因です。 今後コンパイルしてから投稿します。 あと、失礼と存じますが、 できれば質問の主旨に沿える 内容を頂ければ助かります。 回答ありがとうございました。
- asuncion
- ベストアンサー率33% (2127/6289)
for文で、繰り返しを制御するための変数が filenoであるのは何故でしょうか。
補足
申し訳ありません。 書き間違えてしましました。 for文でまわすのは、 filenoではなくiです。
お礼
<8ですね。 間違っていました。 filenoという関数があるんですね。 チェック入れてくださった場所は 書き換えておこうと思います。 snprintfというのがあったんですね。 これを使って試してみます! まだまだ勉強不足で、大変参考になります。 ありがとうございました!