rename、_wrenamerename, _wrename

ファイルまたはディレクトリの名前を変更します。Rename a file or directory.


int rename(
   const char *oldname,
   const char *newname
int _wrename(
   const wchar_t *oldname,
   const wchar_t *newname


古い名前へのポインター。Pointer to old name.

新しい名前へのポインター。Pointer to new name.

戻り値Return Value

名前が正常に変更された場合、これらの関数はそれぞれ 0 を返します。Each of these functions returns 0 if it is successful. エラーが発生した場合、関数は0以外の値を返し、 errno を次の値のいずれかに設定します。On an error, the function returns a nonzero value and sets errno to one of the following values:

errno の値errno value 条件Condition
EACCESEACCES newname によって指定されたファイルまたはディレクトリが既に存在するか、(無効なパスのため) 作成できない、または oldname がディレクトリであり、newname によって異なるパスが指定されています。File or directory specified by newname already exists or could not be created (invalid path); or oldname is a directory and newname specifies a different path.
ENOENTENOENT oldname によって指定されたファイルまたはパスが見つかりません。File or path specified by oldname not found.
EINVALEINVAL 名前に無効な文字が含まれています。Name contains invalid characters.

その他の返される可能性のある戻り値については、「_doserrno、_errno、syserrlist、および _sys_nerr」を参照してください。For other possible return values, see _doserrno, _errno, syserrlist, and _sys_nerr.


rename 関数は、oldname によって指定されたファイルまたはディレクトリの名前を newname によって指定された名前に変更します。The rename function renames the file or directory specified by oldname to the name given by newname. 古い名前は、既存のファイルまたはディレクトリのパスである必要があります。The old name must be the path of an existing file or directory. 新しい名前を既存のファイルまたはディレクトリのパスにすることはできません。The new name must not be the name of an existing file or directory. rename を使用して、newname 引数で別のパスを指定することにより、1 つのディレクトリまたはデバイスから別のディレクトリまたはデバイスにファイルを移動することができます。You can use rename to move a file from one directory or device to another by giving a different path in the newname argument. ただし、rename を使用してディレクトリを移動することはできません。However, you cannot use rename to move a directory. ディレクトリの名前を変更することはできますが、移動はできません。Directories can be renamed, but not moved.

_wrename_rename のワイド文字バージョンです。 _wrename する引数はワイド文字列です。_wrename is a wide-character version of _rename; the arguments to _wrename are wide-character strings. _wrename_rename は同じように動作します。_wrename and _rename behave identically otherwise.

既定では、この関数のグローバル状態はアプリケーションにスコープが設定されています。By default, this function's global state is scoped to the application. これを変更するには、「 CRT でのグローバル状態」を参照してください。To change this, see Global state in the CRT.

汎用テキスト ルーチンのマップGeneric-Text Routine Mappings

TCHAR.H のルーチンTCHAR.H routine _UNICODE および _MBCS が未定義の場合_UNICODE & _MBCS not defined _MBCS が定義されている場合_MBCS defined _UNICODE が定義されている場合_UNICODE defined
_trename_trename renamerename renamerename _wrename_wrename


ルーチンによって返される値Routine 必須ヘッダーRequired header
renamerename <io.h> または <stdio.h><io.h> or <stdio.h>
_wrename_wrename <stdio.h> または <wchar.h><stdio.h> or <wchar.h>

互換性の詳細については、「互換性」を参照してください。For additional compatibility information, see Compatibility.


C ランタイム ライブラリのすべてのバージョン。All versions of the C run-time libraries.


// crt_renamer.c
/* This program attempts to rename a file named
* CRT_RENAMER.OBJ to CRT_RENAMER.JBO. For this operation
* to succeed, a file named CRT_RENAMER.OBJ must exist and
* a file named CRT_RENAMER.JBO must not exist.

#include <stdio.h>

int main( void )
   int  result;
   char old[] = "CRT_RENAMER.OBJ", new[] = "CRT_RENAMER.JBO";

   /* Attempt to rename file: */
   result = rename( old, new );
   if( result != 0 )
      printf( "Could not rename '%s'\n", old );
      printf( "File '%s' renamed to '%s'\n", old, new );



関連項目See also

ファイルの処理File Handling