Freigeben über


_splitpath_s, _wsplitpath_s

Unterteilt einen Pfadnamen in Komponenten. Diese Versionen sind von _splitpath, _wsplitpath mit werden, wie in Sicherheitsfunktionen in der CRT beschrieben.

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

  • [in] path
    Vollständiger Pfad.

  • [out] drive
    Laufwerkbuchstabe, gefolgt von einem Doppelpunkt (:). Sie können NULL für diesen Parameter übergeben, wenn der Laufwerkbuchstaben benötigen.

  • [in] driveNumberOfElements
    Die Größe des Puffers drive im Einzelbyte- oder den Breitzeichen. Wenn driveNULL ist, muss dieser Wert 0.

  • [out] dir
    Verzeichnispfad, z nachgestellten Schrägstrich. Schrägstrich ( / ), umgekehrte Schrägstriche ( \ ) oder beide verwendet werden. Sie können NULL für diesen Parameter übergeben, wenn Sie den Verzeichnispfad benötigen.

  • [in] dirNumberOfElements
    Die Größe des Puffers dir im Einzelbyte- oder den Breitzeichen. Wenn dirNULL ist, muss dieser Wert 0.

  • [out] fname
    Geringer Dateiname (ohne Dateinamenerweiterung). Sie können NULL für diesen Parameter übergeben, wenn der Dateiname benötigen.

  • [in] nameNumberOfElements
    Die Größe des Puffers fname im Einzelbyte- oder den Breitzeichen. Wenn fnameNULL ist, muss dieser Wert 0.

  • [out] ext
    Dateinamenerweiterung, einschließlich führenden Punkt (.). Sie können NULL für diesen Parameter übergeben, wenn Sie nicht die Dateinamenerweiterung benötigen.

  • [in] extNumberOfElements
    Die Größe von ext Puffer im Einzelbyte- oder den Breitzeichen. Wenn extNULL ist, muss dieser Wert 0.

Rückgabewert

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

Fehlerbedingungen

Bedingung

Rückgabewert

path ist NULL.

EINVAL

drive ist NULL, driveNumberOfElements ist ungleich 0 (null)

EINVAL

drive ist als NULL, driveNumberOfElements ist ungewöhnlich

EINVAL

dir ist NULL, dirNumberOfElements ist ungleich 0 (null)

EINVAL

dir ist als NULL, dirNumberOfElements ist ungewöhnlich

EINVAL

fname ist NULL, nameNumberOfElements ist ungleich 0 (null)

EINVAL

fname ist als NULL, nameNumberOfElements ist ungewöhnlich

EINVAL

ext ist NULL, extNumberOfElements ist ungleich 0 (null)

EINVAL

ext ist als NULL, extNumberOfElements ist ungewöhnlich

EINVAL

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

Wenn eine in Puffern zu kurz, das Ergebnis, freien Raum dieser Funktionen aufzunehmen ist sämtliche Puffer auf leere Zeichenfolgen, legen Sie errno auf ERANGE und geben ERANGE fest.

Hinweise

Die _splitpath_s - Funktion wird ein Pfad in seine vier Komponenten. _splitpath_s behandelt automatisch Mehrbyte-Zeichenfolgen-Argumente entsprechend und derzeit erkennt Mehrbytezeichensequenzen entsprechend der Mehrbyte-Codepage. _wsplitpath_s ist eine Breitzeichen-Version von _splitpath_s; die Argumente für _wsplitpath_s sind Zeichenfolgen mit Breitzeichen. Diese Funktionen identisch verhalten sich andernfalls

Zuordnung generischer Textroutinen

TCHAR.H-Routine

_UNICODE & _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, _MAX_FNAME und _MAX_EXT (definiert in STDLIB.H) Geben Sie die maximal zulässige Größe für jede Dateikomponente an. Erfassen Sie die Komponenten, die als entsprechende Manifest Konstantenursachen-Heapbeschädigung größer sind.

In der folgenden Tabelle sind die Werte der Manifestkonstanten auf.

Name

Wert

_MAX_DRIVE

3

_MAX_DIR

256

_MAX_FNAME

256

_MAX_EXT

256

Wenn der vollständige Pfad keine Komponente, (beispielsweise ein Dateiname) enthält, wird _splitpath_s eine leere Zeichenfolge an den entsprechenden Puffer 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 Debugversionen dieser Funktionen füllen zunächst den Puffer mit "0xFD" auf. Mit _CrtSetDebugFillThreshold deaktivieren Sie dieses Verhalten.

Anforderungen

Routine

Erforderlicher Header

_splitpath_s

<stdlib.h>

_wsplitpath_s

<stdlib.h> oder <wchar.h>

Zusätzliche Informationen zur Kompatibilität finden Sie unter Kompatibilität in der Einführung.

Beispiel

Ein Beispiel hierfür finden Sie unter _makepath_s, _wmakepath_s.

.NET Framework-Entsprechung

Nicht zutreffend. Mit PInvoke rufen Sie die Standard-C-Funktion auf. Weitere Informationen finden Sie unter Beispiele für Plattformaufrufe.

Siehe auch

Referenz

Dateibehandlung

_splitpath, _wsplitpath

_fullpath, _wfullpath

_getmbcp

_makepath, _wmakepath

_setmbcp