_splitpath_s, _wsplitpath_s

 

Pour obtenir la dernière documentation sur Visual Studio 2017, consultez Documentation Visual Studio 2017.

Divise un nom de chemin d’accès en composants. Voici les versions de _splitpath, _wsplitpath avec des améliorations de sécurité comme décrit dans fonctionnalités de sécurité de la bibliothèque 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
Lecteur, suivie du 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 drive mémoire tampon de caractères sur un octet ou larges. Si drive est NULL, cette valeur doit être 0.

[out] dir
Chemin d’accès de répertoire, y compris la barre oblique de fin. Barres obliques ( / ), les barres obliques inverses ( \ ), ou les deux peuvent être utilisés. Vous pouvez passer NULL pour ce paramètre si vous n’avez pas besoin du chemin d’accès du répertoire.

[in] dirNumberOfElements
La taille de la dir mémoire tampon de caractères sur un octet ou larges. Si dir est NULL, cette valeur doit être 0.

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

[in] nameNumberOfElements
La taille de la fname mémoire tampon de caractères sur un octet ou larges. Si fname est NULL, cette valeur doit être 0.

[out] ext
Extension de nom de fichier, y compris début période (.). Vous pouvez passer NULL pour ce paramètre si vous n’avez pas besoin de l’extension de nom de fichier.

[in] extNumberOfElements
La taille de ext tampon en caractères sur un octet ou larges. Si ext est NULL, cette valeur doit être 0.

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

Conditions d’erreur

ConditionValeur de retour
path a la valeur NULL.EINVAL
driveest NULL, driveNumberOfElements est différente de zéroEINVAL
driveest non -NULL, driveNumberOfElements est égal à zéroEINVAL
direst NULL, dirNumberOfElements est différente de zéroEINVAL
direst non -NULL, dirNumberOfElements est égal à zéroEINVAL
fnameest NULL, nameNumberOfElements est différente de zéroEINVAL
fnameest non -NULL, nameNumberOfElements est égal à zéroEINVAL
extest NULL, extNumberOfElements est différente de zéroEINVAL
extest non -NULL, extNumberOfElements est égal à zéroEINVAL

Si une des conditions ci-dessus se produit, le Gestionnaire de paramètre non valide est appelé, comme décrit dans Validation de paramètre . Si l'exécution est autorisée à se poursuivre, ces fonctions attribuent à errno la valeur EINVAL et retournent EINVAL.

Si une des mémoires tampons est trop court pour contenir le résultat, ces fonctions effacer toutes les mémoires tampons de chaînes vides, définissez errno à ERANGEet retourner ERANGE.

Le _splitpath_s fonction fractionne un chemin d’accès en ses quatre composants. _splitpath_sgère automatiquement les arguments de chaîne de caractères multioctets selon le cas, en identifiant les séquences de caractères multioctets selon la page de codes multioctets en cours d’utilisation. _wsplitpath_sest une version à caractère élargi de _splitpath_s; les arguments de _``wsplitpath_ssont des chaînes à caractères larges. Ces fonctions se comportent de la même manière que dans le cas contraire

Mappages de routines de texte générique

Routine TCHAR.H_UNICODE et _MBCS non définis_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 de manifeste _MAX_DRIVE, _MAX_DIR, _MAX_FNAME, et _MAX_EXT (défini dans STDLIB. (H) de spécifier la taille maximale autorisée pour chaque composant de fichier. Composants de fichiers plus volumineux que les constantes de manifeste correspondantes entraînent une altération de tas.

Le tableau suivant répertorie les valeurs des constantes de manifeste.

NomValeur
_MAX_DRIVE3
_MAX_DIR256
_MAX_FNAME256
_MAX_EXT256

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

En C++, l’utilisation de ces fonctions est simplifiée par les surcharges de modèle ; les surcharges peuvent déduire la longueur de la mémoire tampon automatiquement, en éliminant le besoin de spécifier un argument taille. Pour plus d'informations, consultez Secure Template Overloads.

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

RoutineEn-tête requis
_splitpath_s<stdlib.h>
_wsplitpath_s<stdlib.h> ou <wchar.h>

Pour plus d'informations sur la compatibilité, voir Compatibilité dans l'introduction.

Consultez l’exemple de _makepath_s, _wmakepath_s.

Non applicable. Pour appeler la fonction C standard, utilisez PInvoke. Pour plus d'informations, consultez Exemples d'appel de plateforme.

Gestion de fichiers
_splitpath, _wsplitpath
_fullpath, _wfullpath
_getmbcp
_makepath, _wmakepath
_setmbcp

Afficher: