_splitpath, _wsplitpath
Nach oben zu stdlib.h - Index
Header-Datei
stdlib.h
Kategorie
Verzeichnisbearbeitungsroutinen
Prototyp
void _splitpath(const char *path, char *drive, char *dir, char *name, char *ext);
void _wsplitpath(const wchar_t *path, wchar_t *drive, wchar_t *dir, wchar_t *name, wchar_t *ext);
Beschreibung
Teilt einen vollständigen Pfadnamen in seine Komponenten auf.
_splitpath übernimmt in path den vollständigen Pfadnamen einer Datei in der Form
X:\DIR\SUBDIR\NAME.EXT
und teilt ihn in seine vier Komponenten auf. Darauf werden diese Komponenten in den Strings gespeichert, auf die drive, dir, name und ext zeigen. (Alle fünf Parameter müssen übergeben werden, jedoch kann jeder NULL sein, was bedeutet, dass die entsprechende Komponente zwar ermittelt, jedoch nicht gespeichert wird.) Die Maximallänge dieser Strings sind durch die Konstanten _MAX_DRIVE, _MAX_DIR, _MAX_PATH, _MAX_FNAME und _MAX_EXT (in stdlib.h definiert) festgelegt; die Größenangaben schließen auch das terminierende Nullzeichen ein. Diese Konstanten sind in stdlib.h definiert.
_MAX_PATH |
Pfad |
_MAX_DRIVE |
Laufwerksbuchstabe einschließlich Doppelpunkt (:) |
_MAX_DIR |
Verzeichnis einschließlich führendem und abschließendem umgekehrtem Schrägstrich (\) |
_MAX_FNAME |
Dateiname |
_MAX_EXT |
Erweiterung einschließlich führendem Punkt (.) |
_splitpath unterstellt, dass ausreichend Platz zur Speicherung jeder Komponente, die nicht NULL ist, verfügbar ist.
Bei der Aufteilung des Pfadnamens weist _splitpath den Komponenten folgende Angaben zu:
- drive enthält neben dem Laufwerksbuchstaben auch den Doppelpunkt (C:, A: usw.).
- dir enthält führende und abschließende umgekehrte Schrägstriche (\BC\include\, \source\ usw.).
- name enthält den Dateinamen.
- ext enthält den der Erweiterung voranstehenden Punkt (.C, .EXE usw.).
Die Funktionen _makepath und _splitpath sind invertierbar. Wenn Sie einen Pfadnamen mit _splitpath aufteilen lassen und dann die zurückgegebenen Elemente an _makepath übergeben, erhalten Sie wieder den ursprünglichen Pfadnamen.
Rückgabewert
Keiner.
Beispiel
#include <dir.h> #include <string.h> #include <stdio.h> #include <stdlib.h> int main(void) { char s[_MAX_PATH]; char drive[_MAX_DRIVE]; char dir[_MAX_DIR]; char file[_MAX_FNAME]; char ext[_MAX_EXT]; /* Aktuelles Arbeitsverzeichnis ermitteln */ getcwd(s,_MAX_PATH); if (s[strlen(s)-1] != '\\') /* Umgekehrten Schrägstrich \ anhängen */ strcat(s,"\\"); /* String in seine Elemente aufteilen */ _splitpath(s,drive,dir,file,ext); strcpy(file,"DATA"); strcpy(ext,".TXT"); /* Alles wieder zusammensetzen */ _makepath(s,drive,dir,file,ext); /* Ergebnis anzeigen */ puts(s); return 0; }
Portabilität
POSIX | Win32 | ANSI C | ANSI C++ | |
---|---|---|---|---|
_splitpath |
+ |
|||
_wsplitpath |
+ |