rename() — ファイルの名前変更

形式

#include <stdio.h>
int rename(const char *oldname, const char *newname);

言語レベル

ANSI

スレッド・セーフ

はい

説明

rename() 関数は、 oldname で指定されたファイルの名前を、 newnameで指定された名前に変更します。 oldname ポインターは、既存のファイルの名前を指している必要があります。 newname ポインターは、既存のファイル名を指定する必要はありません。 ファイルは、既存のファイルの名前に名前変更することはできません。 オープン・ファイルを名前変更することもできません。

新規名に使用できるファイル・フォーマットは、以前の名前のフォーマットによって異なります。 次の表に、ファイルの旧名を指定するために使用できる有効なファイル・フォーマットと、 対応する新規名の有効なファイル・フォーマットを示します。

新規名と旧名の両方のフォーマットが lib/file(member) である場合、ファイルは変更できません。 ファイル名が変更された場合、名前変更は機能しません。 例えば、次の名前は無効です。 lib/file1(member1) lib/file2(member1)。

古い名前 新しい名前
lib/file(member) lib/file(member)、lib/file、file、file(member)
lib/file lib/file、file
ファイル lib/file、file
file(member) lib/file(member)、lib/file、file、file(member)

戻り値

rename() 関数は、正常に実行された場合、 0 を戻します。 エラーの場合は、ゼロ以外の値を戻します。

errno の値は ECONVERT (変換エラー) に設定される可能性があります。

この例では、2 つのファイル名を入力として使用し、 rename() を使用してファイル名を最初の名前から 2 番目の名前に変更します。
#include <stdio.h>
 
int main(int argc, char ** argv )
{
  if ( argc != 3 )
    printf( "Usage: %s old_fn new_fn\n", argv[0] );
  else if ( rename( argv[1], argv[2] ) != 0 )
    perror ( "Could not rename file" );
}

関連情報