_makepath
, _wmakepath
Utwórz nazwę ścieżki na podstawie składników. Dostępne są bezpieczniejsze wersje tych funkcji; zobacz _makepath_s
, _wmakepath_s
.
Składnia
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
Bufor pełnej ścieżki.
drive
Zawiera literę (A, B itd.) odpowiadającą żądanemu dysku i opcjonalnemu końcowemu dwukropekowi. _makepath
Wstawia dwukropek automatycznie w ścieżce złożonej, jeśli jej brakuje. Jeśli drive
ciąg jest NULL
pusty lub wskazuje, w ciągu złożonym path
nie pojawia się żadna litera dysku.
dir
Zawiera ścieżkę katalogów, w tym projektant dysku lub rzeczywistą nazwę pliku. Ukośnik końcowy jest opcjonalny, a ukośnik odwrotny () lub ukośnik odwrotny/
(\
) lub oba mogą być używane w jednym dir
argumencie. Jeśli nie określono ukośnika końcowego (/
lub \
) , zostanie on wstawiony automatycznie. Jeśli dir
parametr jest NULL
pusty lub wskazuje pusty ciąg, żadna ścieżka katalogu nie jest wstawiana w ciągu złożonym path
.
fname
Zawiera nazwę pliku podstawowego bez żadnych rozszerzeń nazw plików. Jeśli fname
parametr jest NULL
pusty lub wskazuje pusty ciąg, w ciągu złożonym path
nie jest wstawiona żadna nazwa pliku.
ext
Zawiera rzeczywiste rozszerzenie nazwy pliku z lub bez kropki wiodącej (.
). _makepath
Wstawia kropkę automatycznie, jeśli nie jest wyświetlana w pliku ext
. Jeśli ext
ciąg jest NULL
pusty lub wskazuje go, żadne rozszerzenie nie zostanie wstawione w ciągu złożonym path
.
Uwagi
Funkcja _makepath
tworzy ciąg ścieżki złożonej z poszczególnych składników, przechowując wynik w pliku path
. Może path
zawierać literę dysku, ścieżkę katalogu, nazwę pliku i rozszerzenie nazwy pliku. _wmakepath
jest wersją szerokoznakową ; _makepath
argumenty, które mają _wmakepath
być ciągami o szerokim znaku. _wmakepath
i _makepath
zachowywać się identycznie inaczej.
Uwaga zabezpieczeń Użyj ciągu zakończonego wartością null. Aby uniknąć przepełnienia buforu, ciąg zakończony wartością null nie może przekraczać rozmiaru buforu path
. _makepath
Nie gwarantuje, że długość ciągu ścieżki złożonej nie przekracza _MAX_PATH
wartości . Aby uzyskać więcej informacji, zobacz Unikanie przekroków buforu.
Domyślnie stan globalny tej funkcji jest zakresem aplikacji. Aby zmienić to zachowanie, zobacz Stan globalny w CRT.
Mapowania procedur tekstu ogólnego
Procedura tchar.h | _UNICODE i _MBCS niezdefiniowane |
_MBCS zdefiniowany |
_UNICODE zdefiniowany |
---|---|---|---|
_tmakepath |
_makepath |
_makepath |
_wmakepath |
Argument path
musi wskazywać pusty bufor wystarczająco duży, aby pomieścić pełną ścieżkę. Złożony path
nie może być większy niż _MAX_PATH
stała zdefiniowana w pliku Stdlib.h.
Jeśli ścieżka to NULL
, wywoływana jest nieprawidłowa procedura obsługi parametrów, zgodnie z opisem w temacie Weryfikacja parametrów. Ponadto errno
parametr jest ustawiony na EINVAL
wartość . NULL
wartości są dozwolone dla wszystkich innych parametrów.
Wymagania
Procedura | Wymagany nagłówek |
---|---|
_makepath |
<stdlib.h> |
_wmakepath |
<stdlib.h> lub <wchar.h> |
Aby uzyskać więcej informacji o zgodności, zobacz Zgodność.
Przykład
// 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
Zobacz też
Obsługa plików
_fullpath
, _wfullpath
_splitpath
, _wsplitpath
_makepath_s
, _wmakepath_s