ファイルまたはディレクトリの名前を変更します。
構文
int rename(
const char *oldname,
const char *newname
);
int _wrename(
const wchar_t *oldname,
const wchar_t *newname
);
パラメーター
oldname
古い名前へのポインター。
newname
新しい名前へのポインター。
戻り値
成功した場合、これらの各関数は 0 を返します。 エラーが発生した場合は 0 以外の値を返し、errno を次のいずれかの値に設定します。
errno 値 |
条件 |
|---|---|
EACCES |
newnameによって指定されたファイルまたはディレクトリは既に存在しているか、作成できませんでした (無効なパス)、またはoldnameがディレクトリであり、newnameは別のパスを指定します。 |
ENOENT |
oldname によって指定されたファイルまたはパスが見つかりません。 |
EINVAL |
名前に無効な文字が含まれています。 |
その他の戻り値については、「_doserrno、_errno、syserrlist、_sys_nerr」を参照してください。
解説
rename 関数では、oldname によって指定されたファイルまたはディレクトリの名前を newname によって指定された名前に変更します。 古い名前は、既存のファイルまたはディレクトリのパスである必要があります。 新しい名前を既存のファイルまたはディレクトリのパスにすることはできません。 rename を使用して、newname 引数で別のパスを指定することにより、1 つのディレクトリまたはデバイスから別のディレクトリまたはデバイスにファイルを移動することができます。 ただし、 rename を使用してディレクトリを移動することはできません。 ディレクトリの名前を変更することはできますが、移動はできません。
_wrename は _renameのワイド文字バージョンであり、 _wrename の引数はワイド文字列です。 それ以外では、_wrename と _rename の動作は同じです。
既定では、この関数のグローバル状態の適用対象は、アプリケーションになります。 この動作を変更するには、「CRT でのグローバル状態」を参照してください。
汎用テキスト ルーチンのマップ
TCHAR.H ルーチン |
_UNICODE と _MBCS が定義されていない |
_MBCS が定義されている |
_UNICODE が定義されている |
|---|---|---|---|
_trename |
rename |
rename |
_wrename |
要件
| ルーチンによって返される値 | 必須ヘッダー |
|---|---|
rename |
<io.h> または <stdio.h> |
_wrename |
<stdio.h> または <wchar.h> |
互換性の詳細については、「 Compatibility」を参照してください。
ライブラリ
C ランタイム ライブラリのすべてのバージョン。
例
// 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 );
else
printf( "File '%s' renamed to '%s'\n", old, new );
}
出力
File 'CRT_RENAMER.OBJ' renamed to 'CRT_RENAMER.JBO'