Udostępnij za pośrednictwem


_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ą ; _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 Zdefiniowane _UNICODE Zdefiniowane
_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