【C言語/C++】rename関数でファイル名を変更する方法
C標準ライブラリの関数 int rename(const char *old_filename, const char *new_filename) は、old_filename で指定されたファイル名を new_filename へ変更するための関数です。この関数を使用することで、ファイルの名前変更だけでなく、別のディレクトリへの移動も同時に行うことができます。
rename関数のプロトタイプ宣言
rename() 関数は、ヘッダーファイル <stdio.h> 内で以下のように宣言されています。
int rename(const char *old_filename, const char *new_filename)
パラメータ
- old_filename − 名前を変更(移動)したい既存ファイルの名前を格納した C 言語の文字列です。
- new_filename − ファイルの新しい名前を格納した C 言語の文字列です。
戻り値
処理が成功した場合には 0 が返されます。エラーが発生した場合には -1 が返され、グローバル変数 errno に対応するエラー内容が設定されます。エラーの原因としては、「変更元のファイルが存在しない」「新しいファイル名と同じ名前のファイルがすでに存在する」「書き込み権限がない」などが考えられます。
サンプルコード
#include <stdio.h>
int main () {
int ret;
char oldname[] = "file.txt";
char newname[] = "newfile.txt";
ret = rename(oldname, newname);
if(ret == 0) {
printf("File renamed successfully");
} else {
printf("Error: unable to rename the file");
}
return(0);
}
サンプルコードの解説
この例では、何らかの内容が書かれたテキストファイル「file.txt」が存在しているものと仮定します。まず、変更前のファイル名「oldname」と変更後のファイル名「newname」を文字列として用意し、それらを引数として rename() 関数に渡しています。
戻り値を変数 ret で受け取り、ret が 0 であれば名前変更は成功、そうでなければ失敗としてメッセージを出力し分けています。このように戻り値を必ずチェックすることで、エラー発生時に適切な処理を行えるプログラムになります。
プログラムをコンパイルして実行すると、次のメッセージが表示され、「file.txt」は「newfile.txt」という名前に変更されます。
実行結果
File renamed successfully
なお、rename() 関数は C 言語だけでなく C++ でも同様に使用できます。その場合は <cstdio> をインクルードしてください。また、C++11 以降では標準ライブラリの std::rename や、ファイルシステムライブラリ(<filesystem>)の std::filesystem::rename を使う方法もあります。
-
C/C++のputwchar()関数とは?使い方と実行例をわかりやすく解説
この記事では、C++ STLにおけるputwchar()関数の動作、構文、および具体的な使用例について詳しく解説します。 putwchar()とは? putwchar()関数は、C++ STLに組み込まれている関数の一つで、<cwchar>ヘッダーファイル内で定義されています。この関数は、ワイド文字(wide character)を標準出力デバイスに書き込むために使用されます。引数として渡されたワイド文字を受け取り、システムの標準出力(stdout)に出力します。 なお、putwchar()は<cstdio>ヘッダーで定義されているputchar()関数のワイド文字版
-
C/C++のsystem()関数とは?使い方と実行例を徹底解説
この記事では、C/C++におけるsystem()関数の基本的な使い方と動作について、具体例を交えながら詳しく解説します。 system()関数は、C/C++標準ライブラリに含まれる関数の一つです。オペレーティングシステムのコマンドプロセッサ(コマンドプロンプト)やターミナルで実行可能なコマンドをプログラムから渡して実行でき、コマンドの処理が完了すると制御をプログラムに戻します。 この関数を使用するには、ヘッダーファイル<stdlib.h>(C++の場合は<cstdlib>)をインクルードする必要があります。 構文 system()関数の構文は以下の通りです。 int