_splitpath
, _wsplitpath
Décomposez un chemin d’accès en composants. Pour obtenir des versions plus sécurisées de ces fonctions, consultez _splitpath_s
, _wsplitpath_s
.
Syntaxe
void _splitpath(
const char *path,
char *drive,
char *dir,
char *fname,
char *ext
);
void _wsplitpath(
const wchar_t *path,
wchar_t *drive,
wchar_t *dir,
wchar_t *fname,
wchar_t *ext
);
Paramètres
path
Chemin complet.
drive
Lettre de lecteur, suivie d’un signe deux-points ( :). Vous pouvez passer NULL
ce paramètre si vous n’avez pas besoin de la lettre de lecteur.
dir
Chemin de répertoire incluant une barre oblique de fin. Il est possible d’utiliser des barres obliques ( /
), des barres obliques inverses ( \
) ou les deux à la fois. Transmettez NULL
ce paramètre si vous n’avez pas besoin du chemin d’accès au répertoire.
fname
Nom de fichier de base (sans extension). Transmettez NULL
ce paramètre si vous n’avez pas besoin du nom de fichier.
ext
Extension de nom de fichier incluant le point de début (.
). Transmettez NULL
ce paramètre si vous n’avez pas besoin de l’extension de nom de fichier.
Notes
La fonction _splitpath
divise un chemin en quatre composants. _splitpath
gère automatiquement les arguments de chaîne de caractères multioctets si nécessaire, en identifiant les séquences de caractères multioctets en fonction de la page de codes multioctets en cours d’utilisation. _wsplitpath
est une version à caractères larges de _splitpath
; les arguments de _wsplitpath
sont des chaînes à caractères larges. Ces fonctions se comportent sinon de façon identique.
Remarque de sécurité Ces fonctions sont soumises à un dépassement de mémoire tampon. Les dépassements de mémoire tampon sont une méthode fréquente d'attaque du système, ce qui provoque une élévation des privilèges injustifiée. Pour plus d’informations, consultez Solutions contre les dépassements de mémoire tampon. Des versions plus sécurisées de ces fonctions sont disponibles. Consultez _splitpath_s
, _wsplitpath_s
.
Par défaut, l’état global de cette fonction est limité à l’application. Pour modifier ce comportement, consultez État global dans le CRT.
Mappages de routines de texte générique
Routine TCHAR.H |
_UNICODE et _MBCS non définis |
_MBCS défini |
_UNICODE défini |
---|---|---|---|
_tsplitpath |
_splitpath |
_splitpath |
_wsplitpath |
Chaque composant du chemin d’accès complet est stocké dans une mémoire tampon distincte ; les constantes _MAX_DRIVE
manifeste, , _MAX_FNAME
_MAX_DIR
et _MAX_EXT
(définies dans STDLIB.H
) spécifient la taille maximale pour chaque composant de fichier. Les composants de fichier dont la taille dépasse celle des constantes manifestes correspondantes occasionnent une altération du tas.
Chaque mémoire tampon doit être aussi volumineuse que sa constante manifeste correspondante pour éviter un possible dépassement de mémoire tampon.
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
affecte des chaînes vides aux mémoires tampons correspondantes.
Vous pouvez passer NULL
à _splitpath
n’importe quel paramètre autre que path
celui dont vous n’avez pas besoin.
Si path
a la valeur NULL
, 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, errno
prend la valeur EINVAL
.
Spécifications
Routine | En-tête requis |
---|---|
_splitpath |
<stdlib.h> |
_wsplitpath |
<stdlib.h> ou <wchar.h> |
Pour plus d’informations sur la compatibilité, consultez Compatibility.
Exemple
Consultez l’exemple pour _makepath
.
Voir aussi
Gestion des fichiers
_fullpath
, _wfullpath
_getmbcp
_makepath
, _wmakepath
_setmbcp
_splitpath_s
, _wsplitpath_s