_makepath
, _wmakepath
Vytvořte název cesty ze součástí. K dispozici jsou bezpečnější verze těchto funkcí; viz _makepath_s
, _wmakepath_s
.
Syntaxe
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
);
Parametry
path
Vyrovnávací paměť úplné cesty.
drive
Obsahuje písmeno (A, B atd.), které odpovídá požadované jednotce a volitelnému koncovému dvojtečku. _makepath
vloží dvojtečku automaticky do složené cesty, pokud chybí. Pokud drive
je NULL
nebo odkazuje na prázdný řetězec, ve složeného path
řetězci se nezobrazí žádné písmeno jednotky.
dir
Obsahuje cestu adresářů, včetně návrhátoru jednotky nebo skutečného názvu souboru. Koncové lomítko je volitelné a buď lomítko (/
) nebo zpětné lomítko (\
), nebo obojí může být použito v jednom dir
argumentu. Pokud není zadáno žádné koncové lomítko (/
nebo \
), vloží se automaticky. Pokud dir
je NULL
nebo odkazuje na prázdný řetězec, není do složeného path
řetězce vložena žádná cesta k adresáři.
fname
Obsahuje název základního souboru bez přípon názvů souborů. Pokud fname
je NULL
nebo odkazuje na prázdný řetězec, do složeného path
řetězce se nevloží žádný název souboru.
ext
Obsahuje skutečnou příponu názvu souboru s počáteční tečkou (.
nebo bez). _makepath
vloží tečku automaticky, pokud se nezobrazí v ext
. Pokud ext
je NULL
nebo odkazuje na prázdný řetězec, do složeného path
řetězce se nevloží žádné rozšíření.
Poznámky
Funkce _makepath
vytvoří složený řetězec cesty z jednotlivých komponent a uloží výsledek do path
. Může path
obsahovat písmeno jednotky, cestu k adresáři, název souboru a příponu názvu souboru. _wmakepath
je verze širokého znaku _makepath
; argumenty, které mají _wmakepath
být řetězce širokého znaku. _wmakepath
a _makepath
chovat se stejně jinak.
Poznámka zabezpečení – Použijte řetězec ukončený hodnotou null. Aby se zabránilo přetečení vyrovnávací paměti, nesmí řetězec ukončený hodnotou null překročit velikost path
vyrovnávací paměti. _makepath
nezajistí, aby délka složeného řetězce cesty nepřekračovala _MAX_PATH
. Další informace najdete v tématu Zabránění přetečení vyrovnávací paměti.
Ve výchozím nastavení je globální stav této funkce vymezen na aplikaci. Chcete-li toto chování změnit, přečtěte si téma Globální stav v CRT.
Mapování rutin obecného textu
Rutina Tchar.h | _UNICODE a _MBCS není definován |
_MBCS definovaný |
_UNICODE definovaný |
---|---|---|---|
_tmakepath |
_makepath |
_makepath |
_wmakepath |
Argument path
musí odkazovat na prázdnou vyrovnávací paměť dostatečně velká, aby se podržel úplná cesta. Složený soubor path
nesmí být větší než konstanta _MAX_PATH
definovaná v souboru Stdlib.h.
Pokud je NULL
cesta , je vyvolána neplatná obslužná rutina parametru, jak je popsáno v ověření parametru. Kromě toho errno
je nastavena na EINVAL
. NULL
pro všechny ostatní parametry jsou povoleny hodnoty.
Požadavky
Rutina | Požadovaný hlavičkový soubor |
---|---|
_makepath |
<stdlib.h> |
_wmakepath |
<stdlib.h> nebo <wchar.h> |
Další informace o kompatibilitě najdete v tématu Kompatibilita.
Příklad
// 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 );
}
Path created with _makepath: c:\sample\crt\makepath.c
Path extracted with _splitpath:
Drive: c:
Dir: \sample\crt\
Filename: makepath
Ext: .c
Viz také
Zpracování souborů
_fullpath
, _wfullpath
_splitpath
, _wsplitpath
_makepath_s
, _wmakepath_s