_splitpath
, _wsplitpath
Unterteilen Sie einen Pfad in Komponenten. Sicherere Versionen dieser Funktionen sind verfügbar, siehe _splitpath_s
, _wsplitpath_s
.
Syntax
void _splitpath(
const char *path,
char *drive,
char *dir,
char *fname,
char *ext
);
void _wsplitpath(
const wchar_t *path,
wchar_t *drive,
wchar_t *dir,
wchar_t *fname,
wchar_t *ext
);
Parameter
path
Vollständiger Pfad
drive
Laufwerkbuchstaben gefolgt von einem Doppelpunkt (:). Sie können diesen Parameter übergeben NULL
, wenn Sie den Laufwerkbuchstaben nicht benötigen.
dir
Verzeichnispfad, einschl. nachstehender Schrägstrich. Führende Schrägstriche ( /
), umgekehrte Schrägstriche ( \
) oder beide können verwendet werden. Übergeben Sie NULL
diesen Parameter, wenn Sie den Verzeichnispfad nicht benötigen.
fname
Basisdateiname (ohne Erweiterung). Übergeben Sie NULL
diesen Parameter, wenn Sie den Dateinamen nicht benötigen.
ext
Dateierweiterung, einschl. führender Punkt (.
). Übergeben Sie NULL
diesen Parameter, wenn Sie die Dateinamenerweiterung nicht benötigen.
Hinweise
Die _splitpath
-Funktion teilt einen Pfad in seine vier Komponenten auf. _splitpath
behandelt Multibyte-Zeichenfolgenargumente automatisch richtig. Die Erkennung von Multibyte-Zeichenfolgen erfolgt auf der Grundlage der aktuell verwendeten Multibyte-Codeseite. _wsplitpath
ist eine Breitzeichenversion von _splitpath
. Die Argumente für _wsplitpath
sind Zeichenfolgen mit Breitzeichen. Anderenfalls verhalten sich diese Funktionen identisch.
Sicherheitshinweis : Diese Funktionen unterliegen dem Pufferüberlauf. Pufferüberlaufprobleme werden häufig bei Systemangriffen eingesetzt, da sie zu einer unbefugten Ausweitung der Berechtigungen führen. Weitere Informationen finden Sie unter Vermeiden von Pufferüberläufen. Sicherere Versionen dieser Funktionen sind verfügbar. Informationen dazu finden Sie unter _splitpath_s
, _wsplitpath_s
.
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 |
_splitpath |
_splitpath |
_wsplitpath |
Jede Komponente des vollständigen Pfads wird in einem separaten Puffer gespeichert. die Manifestkonstanten _MAX_DRIVE
, _MAX_DIR
, , _MAX_FNAME
und _MAX_EXT
(definiert in STDLIB.H
) geben die maximale 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.
Jeder Puffer muss so groß wie die entsprechende Manifestkonstante sein, damit ein potenzieller Pufferüberlauf vermieden werden kann.
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
werden den entsprechenden Puffern leere Zeichenfolgen zugewiesen.
Sie können für einen anderen path
Parameter als den nicht benötigten Parameter übergeben NULL
_splitpath
werden.
Wenn path
den Wert NULL
annimmt, wird der Handler für ungültige Parameter aufgerufen, wie in Parameter Validation. Wenn die weitere Ausführung zugelassen wird, wird errno
auf EINVAL
festgelegt.
Anforderungen
Routine | Erforderlicher Header |
---|---|
_splitpath |
<stdlib.h> |
_wsplitpath |
<stdlib.h> oder <wchar.h> |
Weitere Informationen zur Kompatibilität finden Sie unter Kompatibilität.
Beispiel
Ein Beispiel hierfür finden Sie unter _makepath
.
Siehe auch
Dateibehandlung
_fullpath
, _wfullpath
_getmbcp
_makepath
, _wmakepath
_setmbcp
_splitpath_s
, _wsplitpath_s