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" );
}