_makepath, _wmakepath
Erstellen Sie einen Pfadnamen der Komponenten.Sicherere Versionen dieser Funktionen sind verfügbar. Weitere Informationen finden Sie unter _makepath_s, _wmakepath_s.
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
Puffer des vollständigen Pfads.drive
Enthält einen Buchstaben (A, B usw.) entsprechend dem gewünschten Laufwerk und einem optionalen nachgestellten Doppelpunkt._makepath fügt den Doppelpunkt automatisch in den zusammengesetzten Pfad ein, wenn er fehlt.Wenn driveNULL ist oder eine leere Zeichenfolge zeigt, wird kein Laufwerkbuchstabe in der zusammengesetzten path Zeichenfolge.dir
Enthält den Pfad von Verzeichnissen, ohne den Laufwerkbezeichner oder den tatsächlichen Dateinamen.Der nachfolgende Schrägstrich ist optional und entweder ein Schrägstrich (/) oder ein umgekehrter Schrägstrich (\) oder beides werden in einem einzelnen dir-Argument verwendet werden.Wenn kein nachgestellter Schrägstrich (/oder \) angegeben, wird er automatisch eingefügt.Wenn dirNULL ist oder eine leere Zeichenfolge zeigt, wird kein Verzeichnispfad in die zusammengesetzte path Zeichenfolge eingefügt.fname
Enthält den Basisdateinamen ohne Dateinamenerweiterungen.Wenn fnameNULL ist oder eine leere Zeichenfolge zeigt, wird kein Dateiname in die zusammengesetzte path Zeichenfolge eingefügt.ext
Enthält die tatsächliche Dateinamenerweiterung (mit oder ohne einen führenden Punkt (.)._makepath fügt automatisch den Punkt ein, wenn es nicht in extangezeigt wird.Wenn extNULL ist oder eine leere Zeichenfolge zeigt, wird keine Erweiterung in die zusammengesetzte path Zeichenfolge eingefügt.
Hinweise
Die _makepath-Funktion erstellt eine zusammengesetzte Pfadzeichenfolge von den einzelnen Komponenten und speichert das Ergebnis in path.path könnte einen Laufwerkbuchstaben, einen Verzeichnispfad, einen Dateinamen und eine Dateinamenerweiterung ein._wmakepath ist eine Breitzeichen-Version von _makepath. _wmakepath sind die Argumente für Zeichenfolgen mit Breitzeichen._wmakepath und _makepath verhalten sich ansonsten unterscheiden.
Sicherheitshinweis Verwenden Sie eine auf NULL endende Zeichenfolge.Um Pufferüberlauf zu vermeiden, darf die auf NULL endende Zeichenfolge path die Größe des Puffers nicht überschreiten._makepath garantiert nicht, dass die Länge der zusammengesetzten Pfadzeichenfolge nicht _MAX_PATHüberschreitet.Weitere Informationen finden Sie unter Vermeiden von Pufferüberläufen.
Zuweisung generischer Textroutinen
Tchar.h-Routine |
_UNICODE als auch _MBCS nicht definiert |
_MBCS definieren |
_UNICODE definiert |
---|---|---|---|
_tmakepath |
_makepath |
_makepath |
_wmakepath |
Das path-Argument muss zu einem leeren Puffer ausreichend verweisen, der den vollständigen Pfad enthalten groß ist.Zusammengesetzte path muss nicht größer als die _MAX_PATH Konstante sein, definiert in Stdlib.h.
Wenn Pfad NULLungültige Parameter ist, wird der Ereignishandler aufgerufen, wie in Parametervalidierungbeschrieben.Außerdem wird errno zu EINVALfestgelegt.NULL-Werte werden für alle anderen Parameter zulässt.
Anforderungen
Routine |
Erforderlicher Header |
---|---|
_makepath |
<stdlib.h> |
_wmakepath |
<stdlib.h> oder <wchar.h> |
Weitere Informationen finden Sie unter Kompatibilität Kompatibilität in der Einführung.
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 );
}