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