_splitpath_s
, _wsplitpath_s
Suddivide un nome di percorso nei componenti. Queste funzioni sono versioni di , _wsplitpath
con miglioramenti della_splitpath
sicurezza, come descritto in Funzionalità di sicurezza in CRT.
Sintassi
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
path
Percorso completo.
drive
Lettera di unità, seguita da due punti (:
). Se non è necessaria la lettera di unità, è possibile passare NULL
per questo parametro.
driveNumberOfElements
Dimensioni del buffer drive
in caratteri a byte singolo o wide. Se drive
è NULL
, questo valore deve essere 0.
dir
Percorso di directory, inclusa la barra finale. È possibile usare barre ( /
), barre rovesciate ( \\
) o entrambe. È possibile passare NULL
per questo parametro se non è necessario il percorso della directory.
dirNumberOfElements
Dimensioni del buffer dir
in caratteri a byte singolo o wide. Se dir
è NULL
, questo valore deve essere 0.
fname
Nome di file di base (senza estensione). È possibile passare NULL
per questo parametro se non è necessario il nome file.
nameNumberOfElements
Dimensioni del buffer fname
in caratteri a byte singolo o wide. Se fname
è NULL
, questo valore deve essere 0.
ext
Estensione del nome di file, incluso il punto iniziale (.
). È possibile passare NULL
per questo parametro se non è necessaria l'estensione del nome file.
extNumberOfElements
Dimensioni del buffer ext
in caratteri a byte singolo o wide. Se ext
è NULL
, questo valore deve essere 0.
Valore restituito
Zero se con esito positivo; un codice di errore in caso di errore.
Condizioni di errore
Condizione | Valore restituito |
---|---|
path è NULL |
EINVAL |
drive è NULL , driveNumberOfElements è diverso da zero |
EINVAL |
drive non è NULL , driveNumberOfElements è zero |
EINVAL |
dir è NULL , dirNumberOfElements è diverso da zero |
EINVAL |
dir non è NULL , dirNumberOfElements è zero |
EINVAL |
fname è NULL , nameNumberOfElements è diverso da zero |
EINVAL |
fname non è NULL , nameNumberOfElements è zero |
EINVAL |
ext è NULL , extNumberOfElements è diverso da zero |
EINVAL |
ext non è NULL , extNumberOfElements è zero |
EINVAL |
Se si verifica una delle condizioni precedenti, viene richiamato il gestore di parametri non validi, come descritto in Convalida dei parametri . Se l'esecuzione può continuare, queste funzioni impostano errno
su EINVAL
e restituiscono EINVAL
.
Se uno qualsiasi dei buffer è troppo breve per contenere il risultato, queste funzioni cancellano tutti i buffer per svuotarli dalle stringhe, impostano errno
su ERANGE
e restituiscono ERANGE
.
Osservazioni:
La funzione _splitpath_s
suddivide un percorso nei suoi quattro componenti. _splitpath_s
gestisce automaticamente gli argomenti stringa di caratteri multibyte in base alle esigenze, riconoscendo le sequenze di caratteri multibyte in base alla tabella codici multibyte attualmente in uso. _wsplitpath_s
è una versione a caratteri "wide" di _splitpath_s
. Gli argomenti per _wsplitpath_s
sono stringhe a caratteri "wide". A parte ciò, queste funzioni si comportano in modo identico.
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
TCHAR.H routine |
_UNICODE e _MBCS non definito |
_MBCS definito |
_UNICODE definito |
---|---|---|---|
_tsplitpath_s |
_splitpath_s |
_splitpath_s |
_wsplitpath_s |
Ogni componente del percorso completo viene archiviato in un buffer separato; le costanti _MAX_DRIVE
manifesto , _MAX_DIR
, _MAX_FNAME
e _MAX_EXT
(definite in STDLIB.H
) specificano le dimensioni massime consentite per ogni componente di file. I componenti del file più grandi delle costanti manifeste corrispondenti causano il danneggiamento dell'heap.
La tabella seguente elenca i valori delle costanti manifeste.
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 nome file, _splitpath_s
assegna una stringa vuota al buffer corrispondente.
In C++ l'uso di queste funzioni è semplificato dagli overload dei modelli. Gli overload possono dedurre la lunghezza del buffer automaticamente, eliminando la necessità di specificare un argomento di dimensione. Per altre informazioni, vedere Proteggere gli overload dei modelli.
Le versioni della libreria di debug di queste funzioni riempiono prima di tutto il buffer con 0xFE. Per disabilitare questo comportamento, usare _CrtSetDebugFillThreshold
.
Requisiti
Ciclo | Intestazione obbligatoria |
---|---|
_splitpath_s |
<stdlib.h> |
_wsplitpath_s |
<stdlib.h> oppure <wchar.h> |
Per altre informazioni sulla compatibilità, vedere Compatibility (Compatibilità).
Esempio
Vedere l'esempio per _makepath_s
, _wmakepath_s
.
Vedi anche
Gestione dei file
_splitpath
, _wsplitpath
_fullpath
, _wfullpath
_getmbcp
_makepath
, _wmakepath
_setmbcp