Sdílet prostřednictvím


_makepath_s _wmakepath_s

Vytvoří název cesty z komponent.Tyto verze jsou _makepath, _wmakepath s vylepšení zabezpečení popsaným v Funkce zabezpečení v CRT.

errno_t _makepath_s(
   char *path,
   size_t sizeInBytes,
   const char *drive,
   const char *dir,
   const char *fname,
   const char *ext 
);
errno_t _wmakepath_s(
   wchar_t *path,
   size_t sizeInWords,
   const wchar_t *drive,
   const wchar_t *dir,
   const wchar_t *fname,
   const wchar_t *ext 
);
template <size_t size>
errno_t _makepath_s(
   char (&path)[size],
   const char *drive,
   const char *dir,
   const char *fname,
   const char *ext 
); // C++ only
template <size_t size>
errno_t _wmakepath_s(
   wchar_t (&path)[size],
   const wchar_t *drive,
   const wchar_t *dir,
   const wchar_t *fname,
   const wchar_t *ext 
); // C++ only

Parametry

  • [výstup]path
    Vyrovnávací paměť úplnou cestu.

  • [v]sizeInWords
    Velikost vyrovnávací paměti v slova.

  • [v]sizeInBytes
    Velikost vyrovnávací paměti v bajtech.

  • [v]drive
    Písmeno (A, B a tak dále) obsahuje odpovídající požadovanou jednotku a volitelné koncové dvojtečku._makepath_sautomaticky vloží dvojtečka ve složené cestě Jestliže chybíPokud drive je NULL nebo odkazuje na prázdný řetězec, zobrazí se ve složené žádné písmeno jednotky path řetězec.

  • [v]dir
    Obsahuje cestu adresáře není včetně označení jednotky nebo název skutečný soubor.Koncové lomítko je nepovinný a lomítko (/) nebo zpětné lomítko (\) nebo obojí může být použita v jednom dir argument.Pokud žádné koncové lomítko (/ nebo \) je zadán automaticky vložen.Pokud dir je NULL nebo odkazuje na prázdný řetězec, žádná cesta adresáře je vložena do složené path řetězec.

  • [v]fname
    Obsahuje základní název souboru bez přípony všech souborů.Pokud fname je NULL nebo odkazuje na prázdný řetězec, název souboru se vloží do složené path řetězec.

  • [v]ext
    Obsahuje skutečné příponu názvu, s nebo bez úvodní tečky (.)._makepath_sautomaticky vloží období, pokud se nezobrazí v ext.Pokud ext je NULL nebo odkazuje na prázdný řetězec bez přípony je vložena do složené path řetězec.

Vrácená hodnota

Nula, pokud je úspěšná. Kód chyby při selhání.

Chybové podmínky

path

sizeInWords / sizeInBytes

Vrátit

Obsahpath

NULL

žádné

EINVAL

Nezměněno

žádné

< = 0

EINVAL

Nezměněno

Pokud dojde k některé z výše uvedených podmínek chyba, tyto funkce vyvolat popisovač neplatný parametr popsaným v Ověření parametrů.Pokud je povoleno spuštění pokračovat, errno je nastavena naEINVAL a vrátí funkceEINVAL**.** NULLje povolena pro parametry drive, fname, a ext.Informace o chování při tyto parametry jsou ukazatele s hodnotou null nebo prázdný řetězec, naleznete v části poznámky.

Poznámky

_makepath_s Funkce vytvoří řetězec složené cesty z jednotlivých součástí, ukládání výsledku v path.path Může obsahovat písmeno jednotky, cestu adresáře, název souboru a příponu názvu souboru._wmakepath_sje verze celého znaku _makepath_s; argumenty _wmakepath_s jsou celý znak řetězce._wmakepath_sa _makepath_s chovají jinak shodně.

Obecný Text rutinní mapování

Rutina Tchar.h

_UNICODE a _MBCS není definován

_MBCS, definice

_UNICODE, definice

_tmakepath_s

_makepath_s

_makepath_s

_wmakepath_s

path Argument musí odkazovat na prázdný vyrovnávací paměť dostatečně velké pro uložení úplnou cestu.Složené path musí být větší než _MAX_PATH konstanta, definované v Stdlib.h.

Pokud je cesta NULL, vyvolat neplatný parametr popisovače, jak je popsáno v Ověření parametrů.Kromě toho errno je nastavena na EINVAL.NULLjsou povoleny hodnoty všech parametrů.

V jazyce C++ použití těchto funkcí je zjednodušeno díky šablony přetížení; přetížení automaticky odvodit vyrovnávací paměti (není tak nutné zadat argument velikost) a jsou automaticky nahradit starší, -secure funkce s jejich protějšky novější, zabezpečené.Další informace naleznete v tématu Přetížení šablony zabezpečení.

Ladicí verze tyto funkce nejprve vyplnit vyrovnávací paměti s 0xFD.Toto chování lze zakázat pomocí _CrtSetDebugFillThreshold.

Požadavky

Rutina

Požadované záhlaví

_makepath_s

<stdlib.h>

_wmakepath_s

<stdlib.h> nebo <wchar.h>

Další informace o kompatibilitě v tématu Compatibility v úvodu.

Příklad

// crt_makepath_s.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];
   errno_t err;

   err = _makepath_s( path_buffer, _MAX_PATH, "c", "\\sample\\crt\\",
                      "crt_makepath_s", "c" );
   if (err != 0)
   {
      printf("Error creating path. Error code %d.\n", err);
      exit(1);
   }
   printf( "Path created with _makepath_s: %s\n\n", path_buffer );
   err = _splitpath_s( path_buffer, drive, _MAX_DRIVE, dir, _MAX_DIR, fname,
                       _MAX_FNAME, ext, _MAX_EXT );
   if (err != 0)
   {
      printf("Error splitting the path. Error code %d.\n", err);
      exit(1);
   }
   printf( "Path extracted with _splitpath_s:\n" );
   printf( "  Drive: %s\n", drive );
   printf( "  Dir: %s\n", dir );
   printf( "  Filename: %s\n", fname );
   printf( "  Ext: %s\n", ext );
}

Výsledek

Path created with _makepath_s: c:\sample\crt\crt_makepath_s.c

Path extracted with _splitpath_s:
  Drive: c:
  Dir: \sample\crt\
  Filename: crt_makepath_s
  Ext: .c

Ekvivalent v rozhraní .NET Framework

System::IO::file:: vytvořit

Viz také

Referenční dokumentace

Zpracování souborů

_fullpath _wfullpath

_splitpath_s _wsplitpath_s

_makepath _wmakepath