_fullpath
, _wfullpath
指定された相対パス名の絶対または完全パス名を作成します。
構文
char *_fullpath(
char *absPath,
const char *relPath,
size_t maxLength
);
wchar_t *_wfullpath(
wchar_t *absPath,
const wchar_t *relPath,
size_t maxLength
);
パラメーター
absPath
絶対または完全パス名を格納するバッファーへのポインター、または NULL
。
relPath
相対パス名。
maxLength
絶対パス名のバッファー (absPath
) の最大長。 この長さは、_fullpath
の場合はバイト単位ですが、wchar_t
の場合はワイド文字単位 (_wfullpath
) です。
戻り値
これらの各関数は、絶対パス名 (absPath
) を格納するバッファーへのポインターを返します。 エラーが発生した場合 (たとえば、 relPath
に渡された値に有効でないドライブ文字や見つからないドライブ文字が含まれている場合、または作成された絶対パス名 (absPath
) の長さが maxLength
を超える場合)、関数は NULL
を返します。
解説
_fullpath
関数は、relPath
の相対パス名を完全修飾パスまたは絶対パスに展開し、この名前をabsPath
に格納します。 absPath
が NULL
の場合、パス名を保持するための十分な長さのバッファーを割り当てるために malloc
が使用されます。 このバッファーを解放するのは、呼び出し元の役目です。 相対パス名は、現在の場所から別の場所 (現在の作業ディレクトリ .
など) にパスを指定します。 絶対パス名は、ファイル システムのルートから目的の位置に到達するために必要なパス全体を示す相対パス名の拡張です。 _makepath
とは異なり、_fullpath
を使用して、名前に ./
または ../
が含まれる相対パス (relPath
) の絶対パス名を取得できます。
たとえば、C ランタイム ルーチンを使用するには、アプリケーションに、ルーチンの宣言を含むヘッダー ファイルを含める必要があります。 各ヘッダー ファイルの #include
ディレクティブは、(アプリケーションの作業ディレクトリから) 相対的な方法でファイルの場所を参照します。
#include <stdlib.h>
ファイルの絶対パス (実際のファイル システムの場所) は次のようになります。
\\machine\shareName\msvcSrc\crt\headerFiles\stdlib.h
既定では、この関数のグローバル状態の適用対象は、アプリケーションになります。 この動作を変更するには、「CRT でのグローバル状態」を参照してください。
_fullpath
は、現在使用中のマルチバイト コード ページに従ってマルチバイト文字シーケンスを認識し、マルチバイト文字列の引数を適切な方法で自動的に処理します。 _wfullpath
は、_fullpath
のワイド文字バージョンであり、_wfullpath
の文字列引数はワイド文字列です。 _wfullpath
がマルチバイト文字列を処理しない点を除き、_wfullpath
と _fullpath
の動作は同じです。
_DEBUG
と_CRTDBG_MAP_ALLOC
の両方が定義されている場合、_fullpath
と_wfullpath
の呼び出しは、メモリ割り当てをデバッグできるように、_fullpath_dbg
と_wfullpath_dbg
の呼び出しに置き換えられます。 詳細については、「 _fullpath_dbg
」と「 _wfullpath_dbg
の両方を管理できます。
この関数は、maxlen
が 0 以下の場合、Parameter 検証で説明されているように、無効なパラメーター ハンドラーを呼び出します。 実行の継続が許可された場合、この関数は errno
を EINVAL
に設定し、NULL
を返します。
汎用テキスト ルーチンのマップ
Tchar.h ルーチン |
_UNICODE and _MBCS が定義されていない |
_MBCS が定義されている |
_UNICODE が定義されている |
---|---|---|---|
_tfullpath |
_fullpath |
_fullpath |
_wfullpath |
absPath
バッファーが NULL
である場合、_fullpath
は malloc
を呼び出してバッファーを割り当て、maxLength
引数を無視します。 このバッファーを (free
を使用して) 適切に解放するのは、呼び出し元の責任です。 relPath
引数がディスク ドライブを指定する場合、このドライブの現在のディレクトリがパスと結合されます。
要件
機能 | 必須ヘッダー |
---|---|
_fullpath |
<stdlib.h> |
_wfullpath |
<stdlib.h> または <wchar.h> |
互換性の詳細については、「 Compatibility」を参照してください。
例
// crt_fullpath.c
// This program demonstrates how _fullpath
// creates a full path from a partial path.
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <direct.h>
void PrintFullPath( char * partialPath )
{
char full[_MAX_PATH];
if( _fullpath( full, partialPath, _MAX_PATH ) != NULL )
printf( "Full path is: %s\n", full );
else
printf( "Invalid path\n" );
}
int main( void )
{
PrintFullPath( "test" );
PrintFullPath( "\\test" );
PrintFullPath( "..\\test" );
}
Full path is: C:\Documents and Settings\user\My Documents\test
Full path is: C:\test
Full path is: C:\Documents and Settings\user\test
関連項目
ファイル処理
_getcwd
, _wgetcwd
_getdcwd
, _wgetdcwd
_makepath
, _wmakepath
_splitpath
, _wsplitpath