Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
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ą ; _makepathargumenty, 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_PATHwartoś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 EINVALwartość . 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