_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.