Condividi tramite


_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.

Vedere anche

Riferimenti

Gestione dei file

_splitpath, _wsplitpath

_fullpath, _wfullpath

_getmbcp

_makepath, _wmakepath

_setmbcp