Share via


_makepath_s, _wmakepath_s

Erstellt einen Pfadnamen der Komponenten.Dies sind Versionen von _makepath, _wmakepath mit beschrieben, wie unter Security Enhancements in Sicherheitsfeatures im 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

Parameter

  • [out] path
    Puffer des vollständigen Pfads.

  • [in] sizeInWords
    Größe des Puffers in den Wörtern.

  • [in] sizeInBytes
    Größe des Puffers in Byte.

  • [in] drive
    Enthält einen Buchstaben (A, B usw.) entsprechend dem gewünschten Laufwerk und einem optionalen nachgestellten Doppelpunkt._makepath_s fügt den Doppelpunkt automatisch in den zusammengesetzten Pfad ein, wenn er fehlt.Wenn driveNULL ist oder eine leere Zeichenfolge zeigt, wird kein Laufwerkbuchstabe in der zusammengesetzten path Zeichenfolge.

  • [in] dir
    Enthält den Pfad von Verzeichnissen, ohne den Laufwerkbezeichner oder den tatsächlichen Dateinamen.Der nachfolgende Schrägstrich ist optional und entweder ein Schrägstrich (/) oder ein umgekehrter Schrägstrich (\) oder beides werden in einem einzelnen dir-Argument verwendet werden.Wenn kein nachgestellter Schrägstrich (/oder \) angegeben, wird er automatisch eingefügt.Wenn dirNULL ist oder eine leere Zeichenfolge zeigt, wird kein Verzeichnispfad in die zusammengesetzte path Zeichenfolge eingefügt.

  • [in] fname
    Enthält den Basisdateinamen ohne Dateinamenerweiterungen.Wenn fnameNULL ist oder eine leere Zeichenfolge zeigt, wird kein Dateiname in die zusammengesetzte path Zeichenfolge eingefügt.

  • [in] ext
    Enthält die tatsächliche Dateinamenerweiterung (mit oder ohne einen führenden Punkt (.)._makepath_s fügt automatisch den Punkt ein, wenn es nicht in extangezeigt wird.Wenn extNULL ist oder eine leere Zeichenfolge zeigt, wird keine Erweiterung in die zusammengesetzte path Zeichenfolge eingefügt.

Rückgabewert

Beliebige wenn erfolgreich; Fehlercode ein Fehler auf.

Fehlerbedingungen

path

sizeInWords / sizeInBytes

Return

Inhalt von path

NULL

alle

EINVAL

nicht geändert

alle

<= 0

EINVAL

nicht geändert

Wenn eine der oben genannten Fehlerzuständen, wird diese Funktionen aufrufen ungültige Parameter für ein, wie in Parametervalidierungbeschrieben.Wenn die Ausführung zulässig ist, um fortzufahren, wird errno zuEINVAL festgelegt, und die Funktionenvorhanden sindEINVAL**.** NULL wird berücksichtigt die Parameter drive, fnameund extzurück.Weitere Informationen über das Verhalten, wenn diese Parameter NULL-Zeiger oder leere Zeichenfolgen sind, finden Sie im Abschnitt " Hinweise ".

Hinweise

Die _makepath_s-Funktion erstellt eine zusammengesetzte Pfadzeichenfolge von den einzelnen Komponenten und speichert das Ergebnis in path.path könnte einen Laufwerkbuchstaben, einen Verzeichnispfad, einen Dateinamen und eine Dateinamenerweiterung ein._wmakepath_s ist eine Breitzeichen-Version von _makepath_s. _wmakepath_s sind die Argumente für Zeichenfolgen mit Breitzeichen._wmakepath_s und _makepath_s verhalten sich ansonsten unterscheiden.

Zuweisung generischer Textroutinen

Tchar.h-Routine

_UNICODE als auch _MBCS nicht definiert

_MBCS definieren

_UNICODE definiert

_tmakepath_s

_makepath_s

_makepath_s

_wmakepath_s

Das path-Argument muss zu einem leeren Puffer ausreichend verweisen, der den vollständigen Pfad enthalten groß ist.Zusammengesetzte path muss nicht größer als die _MAX_PATH Konstante sein, definiert in Stdlib.h.

Wenn Pfad NULLungültige Parameter ist, wird der Ereignishandler aufgerufen, wie in Parametervalidierungbeschrieben.Außerdem wird errno zu EINVALfestgelegt.NULL-Werte werden für alle anderen Parameter zulässt.

In C++ unter Verwendung dieser Funktionen wird von Vorlagen Operatoren vereinfacht. Die Überladungen können die Pufferlänge (die Anforderung automatisch beseitigend ableiten, die ein Argument angegeben) und können nicht-sicheren, die älteren Funktionen über ihre Äquivalente sicheren, aktuelleren automatisch ersetzen.Weitere Informationen finden Sie unter Speichern Sie Vorlagen-Überladungen.

Die Debugversionen dieser Funktionen geben zuerst den Puffer mit 0xFD aus.Um dieses Verhalten zu deaktivieren, verwenden Sie _CrtSetDebugFillThreshold.

Anforderungen

Routine

Erforderlicher Header

_makepath_s

<stdlib.h>

_wmakepath_s

<stdlib.h> oder <wchar.h>

Weitere Informationen finden Sie unter Kompatibilität Kompatibilität in der Einführung.

Beispiel

// 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 );
}

Output

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

.NET Framework-Entsprechung

System::EA::Datei::Erstellen

Siehe auch

Referenz

Datei-Behandlung

_fullpath, _wfullpath

_splitpath_s, _wsplitpath_s

_makepath, _wmakepath