This documentation is archived and is not being maintained.

_fullpath, _wfullpath

Create an absolute or full path name for the specified relative path name.

char *_fullpath( 
   char *absPath,
   const char *relPath,
   size_t maxLength 
wchar_t *_wfullpath( 
   wchar_t *absPath,
   const wchar_t *relPath,
   size_t maxLength 


Pointer to a buffer containing the absolute or full path name.
Relative path name.
Maximum length of the absolute path name buffer (absPath). This length is in bytes for _fullpath but in wide characters (wchar_t) for _wfullpath.

Return Value

Each of these functions returns a pointer to a buffer containing the absolute path name (absPath). If there is an error (for example, if the value passed in relPath includes a drive letter that is not valid or cannot be found, or if the length of the created absolute path name (absPath) is greater than maxLength) the function returns NULL.


The _fullpath function expands the relative path name in relPath to its fully qualified or "absolute" path, and stores this name in absPath. A relative path name specifies a path to another location from the current location (such as the current working directory: "."). An absolute path name is the expansion of a relative path name that states the entire path required to reach the desired location from the root of the filesystem. Unlike _makepath, _fullpath can be used to obtain the absolute path name for relative paths (relPath) that include "./" or "../" in their names.

For example, to use C run-time routines, the application must include the header files that contain the declarations for the routines. Each header file include statement references the location of the file in a relative manner (from the application's working directory):

#include <stdlib.h>

when the absolute path (actual file system location) of the file may be:


_fullpath automatically handles multibyte-character string arguments as appropriate, recognizing multibyte-character sequences according to the multibyte code page currently in use. _wfullpath is a wide-character version of _fullpath; the string arguments to _wfullpath are wide-character strings. _wfullpath and _fullpath behave identically except that _wfullpath does not handle multibyte-character strings.

Generic-Text Routine Mappings

TCHAR.H routine _UNICODE & _MBCS not defined _MBCS defined _UNICODE defined
_tfullpath _fullpath _fullpath _wfullpath

If the absPath buffer is NULL, _fullpath calls malloc to allocate a buffer of size _MAX_PATH and ignores the maxLength argument. It is the caller's responsibility to deallocate this buffer (using free) as appropriate. If the relPath argument specifies a disk drive, the current directory of this drive is combined with the path.


Function Required header Compatibility
_fullpath <stdlib.h> Win 98, Win Me, Win NT, Win 2000, Win XP
_wfullpath <stdlib.h> or <wchar.h> Win NT, Win 2000, Win XP

For additional compatibility information, see Compatibility in the Introduction.


All versions of the C run-time libraries.


// 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 );
      printf( "Invalid path\n" );

int main( void )
   PrintFullPath( "test" );
   PrintFullPath( "\\test" );
   PrintFullPath( "..\\test" );

Sample Output

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

See Also

File Handling Routines | _getcwd | _getdcwd | _makepath | _splitpath | Run-Time Routines and .NET Framework Equivalents