_makepath, _wmakepath
Updated: May 2009
Create a path name from components. More secure versions of these functions are available; see _makepath_s, _wmakepath_s.
void _makepath( char *path, const char *drive, const char *dir, const char *fname, const char *ext ); void _wmakepath( wchar_t *path, const wchar_t *drive, const wchar_t *dir, const wchar_t *fname, const wchar_t *ext );
The _makepath function creates a composite path string from individual components, storing the result in path. The path might include a drive letter, directory path, filename, and filename extension. _wmakepath is a wide-character version of _makepath; the arguments to _wmakepath are wide-character strings. _wmakepath and _makepath behave identically otherwise.
Security Note Use a null-terminated string. To avoid buffer overrun, the null-terminated string must not exceed the size of the path buffer. _makepath does not ensure that the length of the composite path string does not exceed _MAX_PATH. For more information, see Avoiding Buffer Overruns.
|
Tchar.h routine |
_UNICODE and _MBCS not defined |
_MBCS defined |
_UNICODE defined |
|---|---|---|---|
|
_tmakepath |
_makepath |
_makepath |
_wmakepath |
The path argument must point to an empty buffer large enough to hold the complete path. The composite path must be no larger than the _MAX_PATH constant, defined in Stdlib.h.
If path is NULL, the invalid parameter handler is invoked, as described in Parameter Validation. In addition, errno is set to EINVAL. NULL values are allowed for all other parameters.
|
Routine |
Required header |
|---|---|
|
_makepath |
<stdlib.h> |
|
_wmakepath |
<stdlib.h> or <wchar.h> |
For more compatibility information, see Compatibility in the Introduction.
// crt_makepath.c
#include <stdlib.h>
#include <stdio.h>
int main( void )
{
char path_buffer[_MAX_PATH];
char drive[_MAX_DRIVE];
char dir[_MAX_DIR];
char fname[_MAX_FNAME];
char ext[_MAX_EXT];
_makepath( path_buffer, "c", "\\sample\\crt\\", "makepath", "c" ); // C4996
// Note: _makepath is deprecated; consider using _makepath_s instead
printf( "Path created with _makepath: %s\n\n", path_buffer );
_splitpath( path_buffer, drive, dir, fname, ext ); // C4996
// Note: _splitpath is deprecated; consider using _splitpath_s instead
printf( "Path extracted with _splitpath:\n" );
printf( " Drive: %s\n", drive );
printf( " Dir: %s\n", dir );
printf( " Filename: %s\n", fname );
printf( " Ext: %s\n", ext );
}