Partager via


_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_DRIVEmanifeste, , _MAX_FNAME_MAX_DIRet _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