C言語再認識:文字列操作はprint系の命令で簡略化 | 技術日誌

技術日誌

ここでは,電子工作,木工などの趣味での記録を書いています。
なお当初はKMK研究所のメインテーマであるSPSのノウハウを書いてきましたが,順次SPSノウハウのページに複製を作っていきます。

 ブラックホールのプログラムで,ブラックホールの位置を順次変えて連番を付けたファイルに出力したいと思います。カウンターをiとし,入力ファイル(indsn)の頭にiの値の3桁の連番を付けた出力ファイル名を作る必要があります。iが1桁や2桁の時は頭に0を付けて3桁にします。これまでは文字列操作の関数を使って実現させていました。indsnが_a.bmp,連番のiが5の場合のテストプログラムを下に示します。
 従来の方法では,[1] iを文字列にしてotdsnに代入(14行目)→5  [2]文字列buffに000を代入(15行目) [3]buffにotdsnの文字を結合→0005(16行目) [4]otdsnにbuffの右側3文字を代入→005(17行目) [5]otdsnにindsnを結合→005_a.bmp(18行目)。これで出来上がります。
 sprintf_sを用いると簡単です。sprintf_s(otdsn, "%03d%s", i, indsn);(22行目)だけで済んでしまいます。プリント命令は本来,画面に好きなように書き出す命令です。いろいろな形での出力が要求されるので,いろいろなことができるようにできています。これを画面ではなく文字列変数に書き出す命令sprintf_sがあるので,これを使えばよいのです。


 実行結果を下に示します。従来法でもsprintf_sを用いた方法のどちらでも希望の文字列ができています。