_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として指定した場合)、またはパスが maxlen の文字より長いことを示す ERANGEいずれかに設定されことを示します。maxlen が以下である場合、この関数は パラメーターの検証に説明されているように、無効なパラメーター ハンドラーが実行されます。
リターン コードの詳細については、「_doserrno、errno、_sys_errlist、および _sys_nerr」を参照してください。
解説
_getcwd 関数は bufferで既定のドライブおよび格納の現在の作業ディレクトリの完全パスを取得し、整数の引数 maxlen はパスの最大長を指定します。エラーは、パスの長さ (終端の null 文字を含む) maxlenを超えている場合に発生します*。*buffer の引数は NULLです。; 少なくとも maxlen サイズのバッファーは、mallocを使用して、必要に応じてのみ) が自動的にパスを格納するために割り当てられます。このバッファーは free を呼び出し、_getcwd の戻り値 (割り当てられるバッファーへのポインター) を渡すことにより、後で解放できます。
_getcwd が現在の作業ディレクトリのパスを表す文字列を返します。現在の作業ディレクトリがルートである場合、文字列は円記号 (\) で終わります。現在の作業ディレクトリがルート ディレクトリ以外の場合、文字列はディレクトリ名と、円記号で終わります。
_wgetcwd は _getcwdのワイド文字バージョンです; _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> |
互換性の詳細については、「C ランタイム ライブラリ」の「互換性」を参照してください。
使用例
// 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