Share via


_splitpath_s, _wsplitpath_s

Unterbricht einen Pfadnamen in Komponenten.Dies sind Versionen von _splitpath, _wsplitpath mit beschrieben, wie unter Security Enhancements in Sicherheitsfeatures im CRT.

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 Sie nicht den Laufwerkbuchstaben erforderlich sind.

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

  • [out] dir
    Verzeichnispfad, einschließlich nachgestellten Schrägstrich.Schrägstriche ( /), umgekehrte Schrägstriche ( \ ) oder beides verwendet werden kann.Sie können NULL für diesen Parameter übergeben, wenn Sie nicht den Verzeichnispfad erfordern.

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

  • [out] fname
    Niedriger Dateiname (ohne Erweiterung).Sie können NULL für diesen Parameter übergeben, wenn Sie nicht den Dateinamen erfordern.

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

  • [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 Einzelbyte- ext im Puffer oder in Breitzeichen.Wenn extNULList, muss dieser Wert 0 sein.

Rückgabewert

Beliebige wenn erfolgreich; Fehlercode ein Fehler auf.

Fehlerbedingungen

Bedingung

Rückgabewert

path istNULL

EINVAL

drive ist, NULLungleich 0 ist driveNumberOfElements

EINVAL

drive ist für Nicht- driveNumberOfElements ist null,NULL

EINVAL

dir ist, NULLungleich 0 ist dirNumberOfElements

EINVAL

dir ist für Nicht- dirNumberOfElements ist null,NULL

EINVAL

fname ist, NULLungleich 0 ist nameNumberOfElements

EINVAL

fname ist für Nicht- nameNumberOfElements ist null,NULL

EINVAL

ext ist, NULLungleich 0 ist extNumberOfElements

EINVAL

ext ist für Nicht- extNumberOfElements ist null,NULL

EINVAL

Wenn eine der oben genannten Bedingungen, wird der Ereignishandler aufgerufen wird auf ungültige Parameter in Parametervalidierung beschrieben.Wenn die Ausführung fortgesetzt werden kann, darf dieses Features zu errno festlegen EINVAL und geben EINVAL.

Wenn eine der Puffer zu kurz, das Ergebnis aufzunehmen, ist diese Funktionen löschen alle Puffer für errno festlegen, leere Zeichenfolgen und ERANGEzu ERANGEzurückzukehren.

Hinweise

Die _splitpath_sFunktion führt einen Pfad in seiner vier Komponenten.Mehrbyte-Zeichenfolgen-Argumente und bei Bedarf automatisch behandelt**_splitpath_sderzeit verwendeten erkennt Mehrbytezeichen sequenzen entsprechend der Mehrbyte-Codepage._wsplitpath_sist eine Breitzeichen-Version von _splitpath_s. _die Argumente fürwsplitpath_s**sind Zeichenfolgen mit Breitzeichen.Diese Funktionen verhalten sich anderweitig identischen

Zuweisung generischer Textroutinen

TCHAR.H-Routine

_UNICODE & _MBCS nicht definiert

_MBCS definieren

_UNICODE definiert

_tsplitpath_s

_splitpath_s

_splitpath_s

_wsplitpath_s

Jede Komponente des vollständigen Pfads wird in einem separaten Puffer gespeichert. _MAX_DRIVEden Manifesten, _MAX_DIR, Konstanten und _MAX_FNAME_MAX_EXT(definiert in STDLIB.H) Geben Sie die maximal zulässige Größe für jede Komponente für die Datei an.Die Datei Komponenten, die größer als die entsprechenden Manifesten Konstanten sind, führen Heap beschädigung.

In der folgenden Tabelle sind die Werte von Manifesten Konstanten auf.

Name

Wert

_MAX_DRIVE

3

_MAX_DIR

256

_MAX_FNAME

256

_MAX_EXT

256

Wenn der vollständige Pfad keine Komponente (z. B. ein Dateiname) enthält, weist _splitpath_s eine leere Zeichenfolge in den entsprechenden Puffer.

In C++ unter Verwendung dieser Funktionen wird von Vorlagen Operatoren vereinfacht. Überladungen können die Pufferlänge automatisch ableiten und die Notwendigkeit mehr, ein Größen - Argument angegeben wird.Weitere Informationen finden Sie unter Speichern Sie Vorlagen-Überladungen.

Die Debugversionen dieser Funktionen geben zuerst den Puffer mit 0xFD aus.Um dieses Verhalten zu deaktivieren, verwenden Sie _CrtSetDebugFillThreshold.

Anforderungen

Routine

Erforderlicher Header

_splitpath_s

<stdlib.h>

_wsplitpath_s

<stdlib.h> oder <wchar.h>

Um Kompatibilität zusätzlichen Informationen finden Sie unter Kompatibilität in der Einführung.

Beispiel

Weitere Informationen finden Sie im Beispiel für _makepath_s, _wmakepath_s.

.NET Framework-Entsprechung

Nicht zutreffend. Um die Standard-C-Funktion aufrufen, verwenden Sie PInvoke. Weitere Informationen finden Sie unter Plattformaufruf-Beispiele.

Siehe auch

Referenz

Datei-Behandlung

_splitpath, _wsplitpath

_fullpath, _wfullpath

_getmbcp

_makepath, _wmakepath

_setmbcp