次の方法で共有


_getcwd、_wgetcwd

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

重要

この API は、Windows ランタイムで実行するアプリケーションでは使用できません。詳細については、「/ZW でサポートされない CRT 関数」を参照してください。

char *_getcwd( 
   char *buffer,
   int maxlen 
);
wchar_t *_wgetcwd( 
   wchar_t *buffer,
   int maxlen 
);

パラメーター

  • buffer
    パスの格納場所。

  • maxlen
    文字内のパスの最大長: _getcwd の char、および _wgetcwd の wchar_t。

戻り値

buffer へのポインターを返します。 NULL 戻り値はエラーを示し、errno は、ENOMEM に設定され、maxlen バイトを割り当てるのにメモリが不足している (NULL の引数が buffer として指定されている場合) ことを示すか、または ERANGE に設定され、パスが maxlen 文字より長いことを示します。 maxlen が 0 以下の場合、この関数は、「パラメーターの検証」に説明されているように、無効なパラメーター ハンドラーを呼び出します。

リターン コードの詳細については、「_doserrno、errno、_sys_errlist、および _sys_nerr」を参照してください。

解説

_getcwd 関数は、既定のドライブの現在の作業ディレクトリの完全なパスを取得し、それを buffer に格納します。 整数の引数 maxlen はパスの最大長を指定します。 パスの長さ (終端の null 文字を含む) が maxlen を超える場合、エラーが発生します。buffer 引数は NULL になる可能性があります。パスを格納するため、maxlen サイズ以上のバッファー (必要であればそれ以上) が malloc を使用して自動的に割り当てられます。 このバッファーは free を呼び出し、それに _getcwd の戻り値 (割り当てられるバッファーへのポインター) を渡すことにより、後で解放できます。

_getcwd は、現在の作業ディレクトリのパスを示す文字列を返します。 現在の作業ディレクトリがルートに設定されている場合、文字列は円記号 (\) で終わります。 現在の作業ディレクトリがルート以外のディレクトリに設定されている場合、文字列は、円記号ではなく、ディレクトリの名前で終わります。

ワイド文字を扱う場合は、_getcwd ではなく _wgetcwd を使用します。_wgetcwd の場合、buffer 引数にはワイド文字列を指定します。また戻り値もワイド文字列です。 それ以外では、_wgetcwd と _getcwd の動作は同じです。

_DEBUG と _CRTDBG_MAP_ALLOC が定義されている場合、_getcwd と _wgetcwd への呼び出しは _getcwd_dbg と _wgetcwd_dbg への呼び出しに置き換えられるので、メモリ割り当てをデバッグできます。 詳細については、「_getcwd_dbg, _wgetcwd_dbg」を参照してください。

汎用テキスト ルーチンのマップ

Tchar.h のルーチン

_UNICODE および _MBCS が未定義の場合

_MBCS が定義されている場合

_UNICODE が定義されている場合

_tgetcwd

_getcwd

_getcwd

_wgetcwd

必要条件

ルーチン

必須ヘッダー

_getcwd

<direct.h>

_wgetcwd

<direct.h> または <wchar.h>

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

使用例

// crt_getcwd.c
// This program places the name of the current directory in the 
// buffer array, then displays the name of the current directory 
// on the screen. Passing NULL as the buffer forces getcwd to allocate
// memory for the path, which allows the code to support file paths
// longer than _MAX_PATH, which are supported by NTFS.
 
#include <direct.h>
#include <stdlib.h>
#include <stdio.h>

int main( void )
{
   char* buffer;

   // Get the current working directory: 
   if( (buffer = _getcwd( NULL, 0 )) == NULL )
      perror( "_getcwd error" );
   else
   {
      printf( "%s \nLength: %d\n", buffer, strnlen(buffer) );
      free(buffer);
   }
}
  

同等の .NET Framework 関数

System::Environment::CurrentDirectory

参照

関連項目

ディレクトリ制御

_chdir、_wchdir

_mkdir、_wmkdir

_rmdir、_wrmdir