_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を . absPathNULL の場合、パス名を保持するための十分な長さのバッファーを割り当てるために malloc が使用されます。 このバッファーを解放するのは、呼び出し元の役目です。 相対パス名は、現在の場所から別の場所 (現在の作業ディレクトリ . など) にパスを指定します。 絶対パス名は、ファイル システムのルートから目的の位置に到達するために必要なパス全体を示す相対パス名の拡張です。 _makepath とは異なり、_fullpath を使用して、名前に ./ または ../ が含まれる相対パス (relPath) の絶対パス名を取得できます。

たとえば、C ランタイム ルーチンを使用するには、アプリケーションに、ルーチンの宣言を含むヘッダー ファイルを含める必要があります。 各ヘッダー ファイルの #include ディレクティブは、(アプリケーションの作業ディレクトリから) 相対的な方法でファイルの場所を参照します。

#include <stdlib.h>

ファイルの絶対パス (実際のファイル システムの場所) は次のようになります。

\\machine\shareName\msvcSrc\crt\headerFiles\stdlib.h

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

_fullpath は、現在使用中のマルチバイト コード ページに従ってマルチバイト文字シーケンスを認識し、マルチバイト文字列の引数を適切な方法で自動的に処理します。 _wfullpath は、_fullpath のワイド文字バージョンであり、_wfullpath の文字列引数はワイド文字列です。 _wfullpath がマルチバイト文字列を処理しない点を除き、_wfullpath_fullpath の動作は同じです。

両方が_CRTDBG_MAP_ALLOC定義されている場合_DEBUGは、メモリ割り当てをデバッグできるように、呼び出_fullpath_wfullpathと呼び出しが_fullpath_dbg呼び出しに_wfullpath_dbg置き換えられます。 詳細については、「 _fullpath_dbg」と「 _wfullpath_dbgの両方を管理できます。

この関数は、パラメーターの検証説明されているように、0 以下の場合maxlenに無効なパラメーター ハンドラーを呼び出します。 実行の継続が許可された場合、この関数は errnoEINVAL に設定し、NULL を返します。

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

Tchar.h ルーチン _UNICODE and _MBCS が定義されていない _MBCS が定義されている _UNICODE が定義されている
_tfullpath _fullpath _fullpath _wfullpath

absPath バッファーが NULL である場合、_fullpathmalloc を呼び出してバッファーを割り当て、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