_makepath
, _wmakepath
Crea un nome di percorso da componenti. Sono disponibili versioni più sicure di queste funzioni; vedere _makepath_s
, _wmakepath_s
.
Sintassi
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
);
Parametri
path
Buffer del percorso completo.
drive
Contiene una lettera (A, B e così via) corrispondente all'unità desiderata e i due punti finali opzionali. _makepath
inserisce automaticamente i due punti nel percorso composito, se mancante. Se drive
è NULL
o punta a una stringa vuota, nessuna lettera di unità viene visualizzata nella stringa path
composita.
dir
Contiene il percorso delle directory, escluso il designatore di unità o il nome del file effettivo. La barra finale è facoltativa e una barra (/
) o una barra rovesciata (\
) o entrambi possono essere usati in un singolo dir
argomento. Se non viene specificata alcuna barra finale (/
o \
), viene inserita automaticamente. Se dir
è NULL
o punta a una stringa vuota, nessun percorso di directory viene inserito nella stringa path
composita.
fname
Contiene il nome del file di base senza alcuna estensione di nome file. Se fname
è NULL
o punta a una stringa vuota, nessun nome file viene inserito nella stringa path
composita.
ext
Contiene l'estensione del nome file effettiva, con o senza un punto iniziale (.
). _makepath
inserisce automaticamente il punto se non viene visualizzato in ext
. Se ext
è NULL
o punta a una stringa vuota, nessuna estensione viene inserita nella stringa path
composita.
Osservazioni:
La funzione _makepath
crea una stringa di percorso composita da singoli componenti, archiviando il risultato in path
. path
potrebbe includere una lettera di unità, un percorso di directory, un nome di file e un'estensione del nome di file. _wmakepath
è una versione a caratteri "wide" di _makepath
. Gli argomenti per _wmakepath
sono stringhe a caratteri "wide". In caso contrario,_wmakepath
e _makepath
si comportano in modo identico.
Nota sulla sicurezza Usare una stringa con terminazione Null. Per evitare un sovraccarico del buffer, le dimensioni della stringa con terminazione Null non devono essere superiori a quelle del buffer di path
. _makepath
non garantisce che la lunghezza della stringa di percorso composito non superi _MAX_PATH
. Per altre informazioni, vedere Evitare sovraccarichi del buffer.
Per impostazione predefinita, lo stato globale di questa funzione è limitato all'applicazione. Per modificare questo comportamento, vedere Stato globale in CRT.
Mapping di routine di testo generico
Routine Tchar.h | _UNICODE e _MBCS non definito |
_MBCS definito |
_UNICODE definito |
---|---|---|---|
_tmakepath |
_makepath |
_makepath |
_wmakepath |
L'argomento path
deve puntare a un buffer vuoto sufficientemente grande da contenere il percorso completo. Il path
composito non deve essere maggiore della costante _MAX_PATH
, definita in Stdlib.h.
Se path è NULL
, viene richiamato il gestore di parametri non validi, come descritto in Convalida dei parametri. Inoltre, errno
è impostato su EINVAL
. I valori NULL
sono consentiti per tutti gli altri parametri.
Requisiti
Ciclo | Intestazione obbligatoria |
---|---|
_makepath |
<stdlib.h> |
_wmakepath |
<stdlib.h> o <wchar.h> |
Per altre informazioni sulla compatibilità, vedere Compatibility (Compatibilità).
Esempio
// 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
Vedi anche
Gestione dei file
_fullpath
, _wfullpath
_splitpath
, _wsplitpath
_makepath_s
, _wmakepath_s