_makepath, _wmakepath

Erstellen Sie einen Pfadnamen aus Komponenten. Sicherere Versionen dieser Funktionen sind verfügbar; siehe _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 driveNULL 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 dirNULL 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 fnameNULL 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 extwird. Wenn extNULL 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. Informationen zum Ändern dieses Verhaltens finden Sie im Global state in the CRT.

Generische Textroutinzuordnungen

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

Dateiverarbeitung
_fullpath, _wfullpath
_splitpath, _wsplitpath
_makepath_s, _wmakepath_s