_chdir, _wchdir

現在の作業ディレクトリを変更します。

構文

int _chdir(
   const char *dirname
);
int _wchdir(
   const wchar_t *dirname
);

パラメーター

dirname
新しい作業ディレクトリのパス。

戻り値

これらの関数は、成功した場合、値 0 を返します。 戻り値 -1 は失敗を示します。 指定したパスが見つからない場合、errnoENOENT に設定されます。 有効な場合dirnameNULL、「パラメーターの検証」の説明に従って、無効なパラメーター ハンドラーが呼び出されます。 実行の継続が許可された場合、 errnoEINVAL に設定され、関数から -1 が返されます。

解説

_chdir 関数は、現在の作業ディレクトリを dirnameで指定されたディレクトリに変更します。 dirname パラメーターは、既存のディレクトリを示す必要があります。 この関数は、任意のドライブの現在の作業ディレクトリを変更できます。 新しいドライブ文字が dirnameで指定されている場合、既定のドライブ文字も同様に変更されます。 たとえば、既定のドライブ文字であり、\BIN現在の作業ディレクトリであるとしますA。 次の呼び出しは、ドライブの現在の作業ディレクトリを\temp新しい既定のCドライブCに変更し、新しい既定のドライブとして確立します。

_chdir("c:\\temp");

パスに省略可能な円記号 (\) を使用すると、C の文字列リテラルでは 1 つの円記号 (\\) を表すのに 2 つの円記号 (\) を使用する必要があります。

_wchdir 関数は、 _chdir関数のワイド文字バージョンです。 dirname 関数の引数 _wchdir は、ワイド文字列です。 それ以外では、_wchdir_chdir の動作は同じです。

既定では、この関数のグローバル状態の適用対象は、アプリケーションになります。 この動作を変更するには、「CRT のグローバル状態」を参照してください

汎用テキスト ルーチン マッピング

Tchar.h ルーチン _UNICODE_MBCS が定義されていない _MBCS が定義されている _UNICODE が定義されている
_tchdir _chdir _chdir _wchdir

必要条件

ルーチンによって返される値 必須ヘッダー オプション ヘッダー
_chdir <direct.h> <errno.h>
_wchdir <direct.h> または <wchar.h> <errno.h>

互換性の詳細については、「 Compatibility」を参照してください。

// crt_chdir.c
// arguments: C:\WINDOWS

/* This program uses the _chdir function to verify
   that a given directory exists. */

#include <direct.h>
#include <stdio.h>
#include <stdlib.h>
#include <errno.h>

int main( int argc, char *argv[] )
{
   if(_chdir( argv[1] ) )
   {
      switch (errno)
      {
      case ENOENT:
         printf( "Unable to locate the directory: %s\n", argv[1] );
         break;
      case EINVAL:
         printf( "Invalid buffer.\n");
         break;
      default:
         printf( "Unknown error.\n");
      }
   }
   else
      system( "dir *.exe");
}
Volume in drive C has no label.
Volume Serial Number is 2018-08A1

Directory of c:\windows

08/29/2002  04:00 AM         1,004,032 explorer.exe
12/17/2002  04:43 PM            10,752 hh.exe
03/03/2003  09:24 AM            33,792 ieuninst.exe
10/29/1998  04:45 PM           306,688 IsUninst.exe
08/29/2002  04:00 AM            66,048 NOTEPAD.EXE
03/03/2003  09:24 AM            33,792 Q330994.exe
08/29/2002  04:00 AM           134,144 regedit.exe
02/28/2003  06:26 PM            46,352 setdebug.exe
08/29/2002  04:00 AM            15,360 TASKMAN.EXE
08/29/2002  04:00 AM            49,680 twunk_16.exe
08/29/2002  04:00 AM            25,600 twunk_32.exe
08/29/2002  04:00 AM           256,192 winhelp.exe
08/29/2002  04:00 AM           266,752 winhlp32.exe
              13 File(s)      2,249,184 bytes
               0 Dir(s)  67,326,029,824 bytes free

関連項目

ディレクトリ コントロール
_mkdir, _wmkdir
_rmdir, _wrmdir
system, _wsystem