_splitpath_s, _wsplitpath_s
Interrompe il percorso in componenti.queste sono versioni di _splitpath, _wsplitpath con i miglioramenti della sicurezza come descritto in Funzionalità di sicurezza in CRT.
errno_t _splitpath_s(
const char * path,
char * drive,
size_t driveNumberOfElements,
char * dir,
size_t dirNumberOfElements,
char * fname,
size_t nameNumberOfElements,
char * ext,
size_t extNumberOfElements
);
errno_t _wsplitpath_s(
const wchar_t * path,
wchar_t * drive,
size_t driveNumberOfElements,
wchar_t *dir,
size_t dirNumberOfElements,
wchar_t * fname,
size_t nameNumberOfElements,
wchar_t * ext,
size_t extNumberOfElements
);
template <size_t drivesize, size_t dirsize, size_t fnamesize, size_t extsize>
errno_t _splitpath_s(
const char *path,
char (&drive)[drivesize],
char (&dir)[dirsize],
char (&fname)[fnamesize],
char (&ext)[extsize]
); // C++ only
template <size_t drivesize, size_t dirsize, size_t fnamesize, size_t extsize>
errno_t _wsplitpath_s(
const wchar_t *path,
wchar_t (&drive)[drivesize],
wchar_t (&dir)[dirsize],
wchar_t (&fname)[fnamesize],
wchar_t (&ext)[extsize]
); // C++ only
Parametri
[in] path
percorso completo.[out] drive
Lettera di unità, seguita da un segno di due punti (:).È possibile passare NULL per questo parametro su se non è necessaria la lettera di unità.[in] driveNumberOfElements
La dimensione di drive buffer in a byte singolo o i caratteri di tipo " wide ".se drive viene NULL, questo valore deve essere 0.[out] dir
Percorso di directory, inclusi la barra finale.barre ( /), barre rovesciate ( \ ), o entrambi può essere utilizzato.È possibile passare NULL per questo parametro su se non è necessario alcun percorso della directory.[in] dirNumberOfElements
La dimensione di dir buffer in a byte singolo o i caratteri di tipo " wide ".se dir viene NULL, questo valore deve essere 0.[out] fname
nome file di base (senza estensione).È possibile passare NULL per questo parametro su se non è necessario alcun nome file.[in] nameNumberOfElements
La dimensione di fname buffer in a byte singolo o i caratteri di tipo " wide ".se fname viene NULL, questo valore deve essere 0.[out] ext
Estensione del nome file, inclusi il punto iniziale (.). È possibile passare NULL per questo parametro su se non è necessario disporre dell'estensione del nome file.[in] extNumberOfElements
la dimensione di ext buffer in a byte singolo o i caratteri di tipo " wide ".se ext viene NULL, questo valore deve essere 0.
Valore restituito
Zero in caso di esito positivo; un codice di errore in caso di errore.
condizioni di errore
Condizione |
Valore restituito |
---|---|
path vieneNULL |
EINVAL |
drive viene NULL, driveNumberOfElements è diverso da zero |
EINVAL |
drive non èNULL, driveNumberOfElements è zero |
EINVAL |
dir viene NULL, dirNumberOfElements è diverso da zero |
EINVAL |
dir non èNULL, dirNumberOfElements è zero |
EINVAL |
fname viene NULL, nameNumberOfElements è diverso da zero |
EINVAL |
fname non èNULL, nameNumberOfElements è zero |
EINVAL |
ext viene NULL, extNumberOfElements è diverso da zero |
EINVAL |
ext non èNULL, extNumberOfElements è zero |
EINVAL |
Se una qualsiasi delle condizioni sopra caso, il gestore non valido di parametro viene richiamato, come descritto in Convalida dei parametri .Se l'esecuzione è consentita per continuare, queste funzioni impostate errno in EINVAL e restituiscono EINVAL.
Se uno dei buffer è troppo breve per utilizzare il risultato, queste funzioni consentono di rimuovere tutti i buffer alle stringhe vuote, impostare errno in ERANGEe restituiscono ERANGE.
Note
_splitpath_sla funzione consente di interrompere un percorso delle quattro componenti._splitpath_sgestisce automaticamente gli argomenti della stringa con caratteri multibyte in base alle proprie esigenze, riconoscere le sequenze di caratteri multibyte in base alla tabella codici multibyte in uso._wsplitpath_sè una versione a caratteri estesi di _splitpath_s; gli argomenti a _wsplitpath_ssono le stringhe di caratteri estesi.Queste funzioni si comportano in modo identico in caso contrario
Mapping di routine a testo generico
routine di TCHAR.H |
_UNICODE & _MBCS non definiti |
_MBCS definito |
_UNICODE definito |
---|---|---|---|
_tsplitpath_s |
_splitpath_s |
_splitpath_s |
_wsplitpath_s |
Ogni parte del percorso completo viene archiviata in un buffer distinto; le costanti manifesto _MAX_DRIVE, _MAX_DIR, _MAX_FNAMEe _MAX_EXT(definito da STDLIB.H) specificare la dimensione massima consentita per ogni componente del file.Componenti del file più grandi del danneggiamento manifesto corrispondente dell'heap di causa di costanti.
Nella tabella seguente sono elencati i valori delle costanti manifesto.
Nome |
Valore |
---|---|
_MAX_DRIVE |
3 |
_MAX_DIR |
256 |
_MAX_FNAME |
256 |
_MAX_EXT |
256 |
Se il percorso completo non contiene un componente (ad esempio, un file), _splitpath_s assegna una stringa vuota nel buffer corrispondente.
In C++, utilizzando queste funzioni è semplificato dagli overload del modello; gli overload possono dedurre la lunghezza del buffer automaticamente, eliminando la necessità di specificare un argomento di dimensione.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 |
---|---|
_splitpath_s |
<definito> |
_wsplitpath_s |
<definito> o <wchar.h> |
per informazioni di compatibilità aggiuntive, vedere compatibilità nell'introduzione.
Esempio
Vedere l'esempio relativo a _makepath_s, _wmakepath_s.
Equivalente .NET Framework
Non applicabile. Per chiamare la funzione c standard, utilizzare PInvoke. Per ulteriori informazioni, vedere Esempi di pinvoke.