_makepath_s, _wmakepath_s
Crea un nome di percorso da componenti.queste sono versioni di _makepath, _wmakepath con i miglioramenti della sicurezza come descritto in Funzionalità di sicurezza in CRT.
errno_t _makepath_s(
char *path,
size_t sizeInBytes,
const char *drive,
const char *dir,
const char *fname,
const char *ext
);
errno_t _wmakepath_s(
wchar_t *path,
size_t sizeInWords,
const wchar_t *drive,
const wchar_t *dir,
const wchar_t *fname,
const wchar_t *ext
);
template <size_t size>
errno_t _makepath_s(
char (&path)[size],
const char *drive,
const char *dir,
const char *fname,
const char *ext
); // C++ only
template <size_t size>
errno_t _wmakepath_s(
wchar_t (&path)[size],
const wchar_t *drive,
const wchar_t *dir,
const wchar_t *fname,
const wchar_t *ext
); // C++ only
Parametri
[out] path
Buffer di percorso completo.[in] sizeInWords
Dimensione del buffer in parole.[in] sizeInBytes
Dimensione del buffer in byte.[in] drive
Contiene una lettera (A, B, e così via) corrispondente nell'unità desiderata e i due punti finali facoltativi._makepath_s inserisce i due punti automaticamente nel percorso composto se disponibile.se drive viene NULL o punta a una stringa vuota, nessuna lettera di unità viene visualizzato in composto path stringa.[in] dir
Contiene il percorso delle directory, escluso dell'indicatore di unità o del nome del file effettivo.La barra finale è facoltativa e una barra (/) o una barra rovesciata (\) o entrambe possono essere utilizzate in un singolo dir argomento.Se nessuna barra finale (/o \) è specificata, viene inserita automaticamente.se dir viene NULL o punta a una stringa vuota, nessun percorso della directory viene inserito in composto path stringa.[in] fname
contiene il nome file di base senza alcune estensioni di file.se fname viene NULL o punta a una stringa vuota, nessun nome file viene inserito in composto path stringa.[in] ext
Contiene effettiva estensione di file, con o senza un punto iniziale (.)._makepath_s inserire il punto automaticamente se non è visualizzato in ext.se ext viene NULL o punta a una stringa vuota, alcuna estensione viene inserito in composto path stringa.
Valore restituito
Zero in caso di esito positivo; un codice di errore in caso di errore.
condizioni di errore
path |
sizeInWords / sizeInBytes |
Return |
Contenuto di path |
---|---|---|---|
NULL |
qualsiasi |
EINVAL |
non modificato |
qualsiasi |
<= 0 |
EINVAL |
non modificato |
Se una qualsiasi delle condizioni di errore in precedenza si verifica, queste funzioni richiamare il gestore non valido di parametro, come descritto in Convalida dei parametri.Se l'esecuzione è consentita per continuare, errno è impostato suEINVAL e i valori restituiti da funzioniEINVAL**.** NULL viene tenuto consentiti i parametri drive, fnamee ext.Per informazioni sul comportamento quando questi parametri sono puntatori null o stringhe vuote, vedere la sezione relativa alle osservazioni.
Note
_makepath_s la funzione crea una stringa di percorso composta da singoli componenti, archiviare il risultato in path.path potrebbe includere una lettera di unità, un percorso di directory, nome file e un'estensione di file._wmakepath_s è una versione a caratteri estesi di _makepath_s; gli argomenti a _wmakepath_s sono le stringhe di caratteri estesi._wmakepath_s e _makepath_s comportano in modo identico in caso contrario.
Mapping di routine a testo generico
routine di Tchar.h |
_UNICODE e _MBCS non definiti |
_MBCS definito |
_UNICODE definito |
---|---|---|---|
_tmakepath_s |
_makepath_s |
_makepath_s |
_wmakepath_s |
path l'argomento deve puntare a un buffer vuoto abbastanza grande da contenere il percorso completo.il composto path non deve essere maggiore di _MAX_PATH costante, definita in Definito.
se il percorso è NULL, il gestore non valido di parametro viene richiamato, come descritto in Convalida dei parametri.inoltre, errno è impostato su EINVAL.NULL i valori consentiti per tutti gli altri parametri.
In C++, utilizzando queste funzioni è semplificato dagli overload del modello; gli overload possono dedurre la lunghezza del buffer automaticamente (che elimina la necessità di specificare un argomento di dimensione) e possono sostituire automaticamente le funzioni precedenti e non sicure con le più recenti, controparti sicure.Per ulteriori informazioni, vedere Assicurarsi che gli overload del modello.
Le versioni di debug di queste funzioni innanzitutto soddisfano il buffer del valore 0xFD.Per disabilitare questo comportamento, utilizzare _CrtSetDebugFillThreshold.
Requisiti
routine |
Intestazione di associazione |
---|---|
_makepath_s |
<definito> |
_wmakepath_s |
<definito> o <wchar.h> |
Per ulteriori informazioni sulla compatibilità, vedere compatibilità nell'introduzione.
Esempio
// crt_makepath_s.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];
errno_t err;
err = _makepath_s( path_buffer, _MAX_PATH, "c", "\\sample\\crt\\",
"crt_makepath_s", "c" );
if (err != 0)
{
printf("Error creating path. Error code %d.\n", err);
exit(1);
}
printf( "Path created with _makepath_s: %s\n\n", path_buffer );
err = _splitpath_s( path_buffer, drive, _MAX_DRIVE, dir, _MAX_DIR, fname,
_MAX_FNAME, ext, _MAX_EXT );
if (err != 0)
{
printf("Error splitting the path. Error code %d.\n", err);
exit(1);
}
printf( "Path extracted with _splitpath_s:\n" );
printf( " Drive: %s\n", drive );
printf( " Dir: %s\n", dir );
printf( " Filename: %s\n", fname );
printf( " Ext: %s\n", ext );
}
Output
Path created with _makepath_s: c:\sample\crt\crt_makepath_s.c
Path extracted with _splitpath_s:
Drive: c:
Dir: \sample\crt\
Filename: crt_makepath_s
Ext: .c