_splitpath_s, _wsplitpath_s

Unterteilen eines Pfadnamens in Komponenten Diese Funktionen sind Versionen von _splitpath, _wsplitpath mit Sicherheitsverbesserungen, wie in sicherheitsfeatures im CRT beschrieben.

Syntax

errno_t _splitpath_s(
   const char * path,
   char * drive,
   size_t driveNumberOfElements,
   char * dir,
   size_t dirNumberOfElements,
   char * fname,
   size_t nameNumberOfElements,
   char * ext,
   size_t extNumberOfElements
);
errno_t _wsplitpath_s(
   const wchar_t * path,
   wchar_t * drive,
   size_t driveNumberOfElements,
   wchar_t *dir,
   size_t dirNumberOfElements,
   wchar_t * fname,
   size_t nameNumberOfElements,
   wchar_t * ext,
   size_t extNumberOfElements
);
template <size_t drivesize, size_t dirsize, size_t fnamesize, size_t extsize>
errno_t _splitpath_s(
   const char *path,
   char (&drive)[drivesize],
   char (&dir)[dirsize],
   char (&fname)[fnamesize],
   char (&ext)[extsize]
); // C++ only
template <size_t drivesize, size_t dirsize, size_t fnamesize, size_t extsize>
errno_t _wsplitpath_s(
   const wchar_t *path,
   wchar_t (&drive)[drivesize],
   wchar_t (&dir)[dirsize],
   wchar_t (&fname)[fnamesize],
   wchar_t (&ext)[extsize]
); // C++ only

Parameter

path
Vollständiger Pfad

drive
Laufwerkbuchstabe, gefolgt von einem Doppelpunkt (:). Sie können diesen Parameter übergeben NULL , wenn Sie den Laufwerkbuchstaben nicht benötigen.

driveNumberOfElements
Die Größe des drive-Puffers in Einzelbytezeichen oder Breitzeichen. Wenn driveNULL ist, muss der Wert 0 sein.

dir
Verzeichnispfad, einschl. nachstehender Schrägstrich. Führende Schrägstriche ( / ), umgekehrte Schrägstriche ( \\ ) oder beide können verwendet werden. Sie können diesen Parameter übergeben NULL , wenn Sie den Verzeichnispfad nicht benötigen.

dirNumberOfElements
Die Größe des dir-Puffers in Einzelbytezeichen oder Breitzeichen. Wenn dirNULL ist, muss der Wert 0 sein.

fname
Basisdateiname (ohne Erweiterung). Sie können diesen Parameter übergeben NULL , wenn Sie den Dateinamen nicht benötigen.

nameNumberOfElements
Die Größe des fname-Puffers in Einzelbytezeichen oder Breitzeichen. Wenn fnameNULL ist, muss der Wert 0 sein.

ext
Dateierweiterung, einschl. führender Punkt (.). Sie können diesen Parameter übergeben NULL , wenn Sie die Dateinamenerweiterung nicht benötigen.

extNumberOfElements
Die Größe des ext-Puffers in Einzelbytezeichen oder Breitzeichen. Wenn extNULL ist, muss der Wert 0 sein.

Rückgabewert

Null, wenn erfolgreich, ein Fehlercode, wenn ein Fehler auftritt.

Fehlerbedingungen

Bedingung Rückgabewert
path ist NULL. EINVAL
drive ist gleich NULL, driveNumberOfElements ist ungleich null EINVAL
drive ist ungleich NULL, driveNumberOfElements ist null EINVAL
dir ist gleich NULL, dirNumberOfElements ist ungleich null EINVAL
dir ist ungleich NULL, dirNumberOfElements ist null EINVAL
fname ist gleich NULL, nameNumberOfElements ist ungleich null EINVAL
fname ist ungleich NULL, nameNumberOfElements ist null EINVAL
ext ist gleich NULL, extNumberOfElements ist ungleich null EINVAL
ext ist ungleich NULL, extNumberOfElements ist null EINVAL

Wenn eine der oben genannten Bedingungen auftritt, wird der ungültige Parameterhandler aufgerufen, wie in der Parameterüberprüfung beschrieben. Wenn die weitere Ausführung zugelassen wird, stellen diese Funktionen errno auf EINVAL ein und geben EINVAL zurück.

Wenn einer der Puffer zu kurz ist, um das Ergebnis aufzunehmen, löschen diese Funktionen alle Puffer in leere Zeichenfolgen, setzen errno auf ERANGE und geben ERANGE zurück.

Hinweise

Die _splitpath_s-Funktion teilt einen Pfad in seine vier Komponenten auf. _splitpath_s behandelt Multibyte-Zeichenfolgenargumente automatisch richtig. Die Erkennung von Multibyte-Zeichenfolgen erfolgt auf der Grundlage der aktuell verwendeten Multibyte-Codeseite. _wsplitpath_s ist eine Breitzeichenversion von _splitpath_s. Die Argumente für _wsplitpath_s sind Zeichenfolgen mit Breitzeichen. Andernfalls verhalten sich diese Funktionen identisch

Standardmäßig gilt der globale Zustand dieser Funktion für die Anwendung. Informationen zum Ändern dieses Verhaltens finden Sie im Global state in the CRT.

Generische Textroutinzuordnungen

TCHAR.H Routine _UNICODE und _MBCS nicht definiert _MBCS Definiert _UNICODE Definiert
_tsplitpath_s _splitpath_s _splitpath_s _wsplitpath_s

Jede Komponente des vollständigen Pfads wird in einem separaten Puffer gespeichert. die Manifestkonstanten _MAX_DRIVE, _MAX_DIR, und _MAX_EXT_MAX_FNAME(definiert in STDLIB.H) geben die maximale zulässige Größe für jede Dateikomponente an. Dateikomponenten, die größer als die entsprechenden Manifestkonstanten sind, können zur Beschädigung des Heaps führen.

In der folgenden Tabelle werden die Werte der Manifestkonstanten aufgelistet.

Name Wert
_MAX_DRIVE 3
_MAX_DIR 256
_MAX_FNAME 256
_MAX_EXT 256

Wenn der vollständige Pfad keine Komponente enthält (z. B. einen Dateinamen), _splitpath_s weist dem entsprechenden Puffer eine leere Zeichenfolge zu.

Die Verwendung dieser Funktionen in C++ wird durch Überladungen (als Vorlagen vorhanden) vereinfacht. Überladungen können automatisch die Pufferlänge ableiten, sodass kein Größenargument angegeben werden muss. Weitere Informationen finden Sie unter "Sichere Vorlagenüberladungen".

Die Debugbibliotheksversionen dieser Funktionen füllen zuerst den Puffer mit 0xFE. Verwenden Sie _CrtSetDebugFillThresholdzum Deaktivieren dieses Verhaltens .

Anforderungen

Routine Erforderlicher Header
_splitpath_s <stdlib.h>
_wsplitpath_s <stdlib.h> oder <wchar.h>

Weitere Informationen zur Kompatibilität finden Sie unter Kompatibilität.

Beispiel

Sehen Sie sich das Beispiel für _makepath_s, _wmakepath_s.

Siehe auch

Dateiverarbeitung
_splitpath, _wsplitpath
_fullpath, _wfullpath
_getmbcp
_makepath, _wmakepath
_setmbcp