Share via


_splitpath_s, _wsplitpath_s

Divise un nom de chemin d'accès dans les composants.Ce sont des versions de _splitpath, _wsplitpath avec des améliorations de sécurité comme décrit dans Fonctionnalités de sécurité du 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

Paramètres

  • [in] path
    Chemin d'accès complet.

  • [out] drive
    Lettre de lecteur, suivi d'un signe deux-points (:).vous pouvez passer NULL pour ce paramètre si vous n'avez pas besoin de la lettre de lecteur.

  • [in] driveNumberOfElements
    la taille de la mémoire tampon d' drive en codé sur un octet ou caractères larges.Si drive est NULL, cette valeur doit être égal à 0.

  • [out] dir
    Chemin d'accès du répertoire, y compris la barre oblique finale.Les barres obliques ( /), les barres obliques inverses ( \ ), ou elles peuvent être utilisées.Vous pouvez passer NULL pour ce paramètre si vous n'avez pas besoin du chemin d'accès au répertoire.

  • [in] dirNumberOfElements
    la taille de la mémoire tampon d' dir en codé sur un octet ou caractères larges.Si dir est NULL, cette valeur doit être égal à 0.

  • [out] fname
    Nom de fichier de base (sans l'extension).Vous pouvez passer NULL pour ce paramètre si vous n'avez pas besoin de nom de fichier.

  • [in] nameNumberOfElements
    la taille de la mémoire tampon d' fname en codé sur un octet ou caractères larges.Si fname est NULL, cette valeur doit être égal à 0.

  • [out] ext
    Extension du nom de fichier, y compris la principale point (.). vous pouvez passer NULL pour ce paramètre si vous n'avez pas besoin de l'extension du nom de fichier.

  • [in] extNumberOfElements
    la taille de la mémoire tampon d' ext en codé sur un octet ou caractères larges.Si ext est NULL, cette valeur doit être égal à 0.

Valeur de retour

Zéro si l'opération a réussi ; code d'erreur en cas de échec.

conditions d'erreur

Condition

Valeur de retour

path estNULL

EINVAL

drive est NULL, driveNumberOfElements est différente de zéro

EINVAL

drive estNULLnon-, driveNumberOfElements est zéro

EINVAL

dir est NULL, dirNumberOfElements est différente de zéro

EINVAL

dir estNULLnon-, dirNumberOfElements est zéro

EINVAL

fname est NULL, nameNumberOfElements est différente de zéro

EINVAL

fname estNULLnon-, nameNumberOfElements est zéro

EINVAL

ext est NULL, extNumberOfElements est différente de zéro

EINVAL

ext estNULLnon-, extNumberOfElements est zéro

EINVAL

Si l'un des au-dessus de les conditions se produit, le gestionnaire de paramètre non valide est appelé, comme décrit dans Validation des paramètres .Si est autorisé à l'exécution de se poursuivre, ces errno défini par fonctions à EINVAL et à EINVALde retour.

Si les mémoires tampons l'une d'elles est trop petite pour contenir le résultat, ces fonctions désactivez toutes les mémoires tampons aux chaînes vides, définissent errno à ERANGE, et retourner ERANGE.

Notes

la fonction d' _splitpath_sdivise un chemin d'accès dans ses quatre composants._splitpath_sgère automatiquement les arguments de chaîne de caractères multioctets comme approprié, l'identification des séquences de caractères multioctets d'après la page de codes multioctets en cours de utilisation._wsplitpath_sest une version à caractère élargi d' _splitpath_s; les arguments à _wsplitpath_ssont des chaînes à caractères larges.Ces fonctions se comportent de sinon

mappages de routines de texte générique

routine de TCHAR.H

_MBCS & de _UNICODE non défini

_MBCS défini

_UNICODE défini

_tsplitpath_s

_splitpath_s

_splitpath_s

_wsplitpath_s

Chaque composant du chemin d'accès complet est stocké dans une mémoire tampon distincte ; les constantes manifestes _MAX_DRIVE, _MAX_DIR, _MAX_FNAME, et _MAX_EXT(défini dans STDLIB.H) spécifiez la taille maximale autorisée pour chaque composant de fichier.Composants de fichier supérieurs à l'altération manifeste correspondante du tas de cause de constantes.

Le tableau suivant répertorie les valeurs des constantes manifestes.

Nom

Valeur

_MAX_DRIVE

3

_MAX_DIR

256

_MAX_FNAME

256

_MAX_EXT

256

Si le chemin d'accès complet ne contient pas de composant (par exemple, un nom de fichier), _splitpath_s assigne une chaîne vide à la mémoire tampon correspondante.

En C++, à l'aide de ces fonctions est simplifié par des surcharges de modèle ; les surcharges peuvent également déduire la longueur de la mémoire tampon automatiquement, en éliminant le besoin de spécifier un argument de taille.Pour plus d'informations, consultez Surcharges sécurisées de modèle.

Les versions debug de ces fonctions exécutent d'abord mémoire tampon avec 0xFD.Pour désactiver ce comportement, utilisez _CrtSetDebugFillThreshold.

Configuration requise

routine

en-tête requis

_splitpath_s

<stdlib.h>

_wsplitpath_s

<stdlib.h> ou <wchar.h>

Pour des informations de compatibilité supplémentaires, consultez compatibilité dans l'introduction.

Exemple

Consultez l'exemple pour _makepath_s, _wmakepath_s.

Équivalent .NET Framework

Non applicable. Pour appeler la fonction C standard, utilisez PInvoke. Pour plus d'informations, consultez l' exemples d'appel de code non managé.

Voir aussi

Référence

Gestion de fichiers

_splitpath, _wsplitpath

_fullpath, _wfullpath

_getmbcp

_makepath, _wmakepath

_setmbcp