_splitpath_s
, _wsplitpath_s
Unterteilen eines Pfadnamens in Komponenten Diese Funktionen sind Versionen von _splitpath
, _wsplitpath
mit Sicherheitsverbesserungen wie unter Sicherheitsfunktionen in der 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 drive
NULL
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 dir
NULL
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 fname
NULL
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 ext
NULL
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. Wie Sie dieses Verhalten ändern, erfahren Sie unter Globaler Status in der CRT.
Mapping generischer Textroutinen
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 Secure Template Overloads.
Die Debugbibliotheksversionen dieser Funktionen füllen zuerst den Puffer mit 0xFE. Verwenden Sie _CrtSetDebugFillThreshold
zum 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
Dateibehandlung
_splitpath
, _wsplitpath
_fullpath
, _wfullpath
_getmbcp
_makepath
, _wmakepath
_setmbcp