Freigeben über


_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_FNAMEund _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 NULLannimmt, 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