C言語再認識:rename引数は文字定数(ファイル名変更プログラム完成) | 技術日誌

技術日誌

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

 前に,「演目ごとに分離したファイルは連番が付けられていて,ファイル名を演目に変えるプログラムを作る」ということを述べました。そのプログラムが完成しました。本当に完成する前に,完成したと思い,実行したところrenameの命令が正しく実行できませんでした。調べるとrenameの2つの引数(旧ファイル名,新ファイル名)は,文字定数でなければならないことがわかりました。rename("oldname.txt" , "newname.txt")の様に新旧のファイル名は確定した名前を入れるのが原則のようでした。やろうとしていたのは,加工して文字変数に代入したものを引数としたかったのです。文字定数でなければならないところに文字変数を入れたので正しく動作しなかったようです。新しいVisual Studioでは,ここのところが厳格になったように思えます。「これは困った」と思いましたが,試しに文字変数の前に(const char*)を付けてみました。これはキャストと言って,「これに続く文字変数を文字定数ということにせよ」という機能です。これにより,うまく動作するようになりました。

 作っている最中に,「C言語で行うのではなく,バッチでやるのが楽」と思うようになりました。バッチファイルの内容はExcelで簡単に作れます。しかし,新しいVisual Studioを使うことにより,変更点とかいろいろと勉強になりました。