_makepath
, _wmakepath
Erstellen Sie einen Pfadnamen aus Komponenten. Sicherere Versionen dieser Funktionen sind verfügbar. Informationen dazu finden Sie unter _makepath_s
, _wmakepath_s
.
Syntax
void _makepath(
char *path,
const char *drive,
const char *dir,
const char *fname,
const char *ext
);
void _wmakepath(
wchar_t *path,
const wchar_t *drive,
const wchar_t *dir,
const wchar_t *fname,
const wchar_t *ext
);
Parameter
path
Vollständiger Pfadpuffer
drive
Enthält einen Buchstaben (A, B usw.) für das gewünschte Laufwerk und einen optionalen nachgestellten Doppelpunkt. _makepath
fügt den Doppelpunkt automatisch in den zusammengesetzten Pfad ein, wenn er fehlt. Wenn drive
NULL
darstellt oder auf eine leere Zeichenfolge verweist, erscheint kein Laufwerksbuchstabe in der zusammengesetzten path
-Zeichenfolge.
dir
Enthält den Pfad der Verzeichnisse, ausgenommen die Laufwerkkennzeichner oder den tatsächlichen Dateinamen. Der nachfolgende Schrägstrich ist optional, und entweder ein Schrägstrich (/
) oder ein umgekehrter Schrägstrich (\
) oder beides können in einem einzelnen dir
Argument verwendet werden. Wenn kein nachgestellter Schrägstrich (/
oder \
) angegeben ist, wird er automatisch eingefügt. Wenn dir
NULL
ist oder auf eine leere Zeichenfolge verweist, wird kein Verzeichnispfad in die zusammengesetzte path
-Zeichenfolge eingefügt.
fname
Enthält den Basisdateinamen ohne Dateinamenerweiterungen. Wenn fname
NULL
ist oder auf eine leere Zeichenfolge verweist, wird kein Dateiname in die zusammengesetzte path
-Zeichenfolge eingefügt.
ext
Enthält die tatsächliche Dateinamenerweiterung mit oder ohne vorangestellten Punkt (.
). _makepath
fügt den Punkt automatisch ein, wenn er nicht angezeigt ext
wird. Wenn ext
NULL
ist oder auf eine leere Zeichenfolge verweist, wird keine Dateiendung in die zusammengesetzte path
-Zeichenfolge eingefügt.
Hinweise
Die _makepath
-Funktion erstellt eine zusammengesetzte Pfadzeichenfolge aus einzelnen Komponenten. Das Ergebnis wird in path
gespeichert. Der path
kann möglicherweise einen Laufwerkbuchstaben, einen Verzeichnispfad, einen Dateinamen sowie Dateinamenerweiterungen enthalten. _wmakepath
ist eine Breitzeichenversion von _makepath
. Die Argumente für _wmakepath
sind Zeichenfolgen mit Breitzeichen. _wmakepath
und _makepath
verhalten sich andernfalls identisch.
Sicherheitshinweis Verwenden Sie eine mit NULL endende Zeichenfolge. Die mit NULL endende Zeichenfolge darf die Größe des path
-Puffers nicht überschreiten, damit kein Pufferüberlauf verursacht wird. _makepath
stellt nicht sicher, dass die Länge der zusammengesetzten Pfadzeichenfolge nicht überschritten wird _MAX_PATH
. Weitere Informationen finden Sie unter Vermeiden von Pufferüberläufen.
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 |
---|---|---|---|
_tmakepath |
_makepath |
_makepath |
_wmakepath |
Das path
-Argument muss auf einen leeren Puffer verweisen, der groß genug ist, um den kompletten Pfad zu enthalten. Das kombinierte path
-Argument darf nicht größer sein als die _MAX_PATH
-Konstante, die in „Stdlib.h“ definiert ist.
Wenn der Pfad lautet NULL
, wird der ungültige Parameterhandler aufgerufen, wie in der Parameterüberprüfung beschrieben. Darüber hinaus wird errno
auf EINVAL
festgelegt. NULL
-Werte sind für alle anderen Parameter zugelassen.
Anforderungen
Routine | Erforderlicher Header |
---|---|
_makepath |
<stdlib.h> |
_wmakepath |
<stdlib.h> oder <wchar.h> |
Weitere Informationen zur Kompatibilität finden Sie unter Kompatibilität.
Beispiel
// crt_makepath.c
#include <stdlib.h>
#include <stdio.h>
int main( void )
{
char path_buffer[_MAX_PATH];
char drive[_MAX_DRIVE];
char dir[_MAX_DIR];
char fname[_MAX_FNAME];
char ext[_MAX_EXT];
_makepath( path_buffer, "c", "\\sample\\crt\\", "makepath", "c" ); // C4996
// Note: _makepath is deprecated; consider using _makepath_s instead
printf( "Path created with _makepath: %s\n\n", path_buffer );
_splitpath( path_buffer, drive, dir, fname, ext ); // C4996
// Note: _splitpath is deprecated; consider using _splitpath_s instead
printf( "Path extracted with _splitpath:\n" );
printf( " Drive: %s\n", drive );
printf( " Dir: %s\n", dir );
printf( " Filename: %s\n", fname );
printf( " Ext: %s\n", ext );
}
Path created with _makepath: c:\sample\crt\makepath.c
Path extracted with _splitpath:
Drive: c:
Dir: \sample\crt\
Filename: makepath
Ext: .c
Siehe auch
Dateibehandlung
_fullpath
, _wfullpath
_splitpath
, _wsplitpath
_makepath_s
, _wmakepath_s