_splitpath, _wsplitpath
Divise un nom de chemin d'accès en ses composants élémentaires. Des versions plus sécurisées de ces fonctions sont disponibles; consultez _splitpath_s, _wsplitpath_s.
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 d'accès complet.drive
Lettre de lecteur, suivi de deux-points (:). Vous pouvez passer NULL pour ce paramètre si vous n'avez pas besoin de la lettre de lecteur.dir
Chemin d'accès au répertoire, invluant la barre oblique finale. Des barres obliques ( /), les barres obliques inverses ( \ ), ou les deux peuvent être utilisées. Vous pouvez passer NULL pour ce paramètre si vous n'avez pas besoin du chemin d'accès.fname
Nom du fichier de base (aucune extension). Vous pouvez renvoyer NULL pour ce paramètre si vous n'avez pas besoin du nom du fichier.ext
Extension du nom de fichier, y compris le principal point (.). Vous pouvez passer NULL pour ce paramètre si vous n'avez pas besoin de l'extension du nom de fichier.
Notes
La fonction _splitpathdivise un chemin d'accès par ses quatre composants. _splitpath gère automatiquement des arguments de chaîne de caractères multi-octets comme appropriés, en identifiant des séquences de caractères multi-octets d'après 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.
Note de sécurité Ces fonctions entraînent un risque potentiel provoqué par 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 fonctionnalités sont disponibles ; voir le _splitpath_s, _wsplitpath_s.
Mappages de routines de texte générique
Routine TCHAR.H |
_UNICODE & _MBCS non définis |
_MBCS défini |
_UNICODE défini |
---|---|---|---|
_tsplitpath |
_splitpath |
_splitpath |
_wsplitpath |
Chaque composant du chemin d'accès complet est stockée dans une mémoire tampon distincte ; les constantes explicites _MAX_DRIVE, _MAX_DIR, _MAX_FNAME, et _MAX_EXT(définies dans STDLIB.H) spécifient la taille maximale autorisée pour chaque composant de fichier. Les composants des fichiers qui sont de dimensions supérieures aux constantes explicites correspondantes engendrent la corruption des données des segments de mémoires.
Chaque mémoire tampon doit aussis grande que la constante explicite correspondante pour éviter un dépassement de mémoire tampon potentiel.
Le tableau suivant répertorie les valeurs des constantes explicites.
Nom |
Valeur |
---|---|
_MAX_DRIVE |
3 |
_MAX_DIR |
256 |
_MAX_FNAME |
256 |
_MAX_EXT |
256 |
Si le chemin complet ne contient aucun composant (par exemple, un nom de fichier), _splitpath affecte une chaîne vide à la mémoire tampon correspondante.
Vous pouvez passer NULL à _splitpath pour un paramètre autre que path lequel vous n'avez pas besoin.
Si path est NULL, le gestionnaire de paramètres non valides est appelé, comme décrit dans Validation de paramètre. Si l'exécution est autorisée à se poursuivre, errno est défini comme EINVAL et la fonction retourne EINVAL.
Configuration requise
Routine |
En-tête requis |
---|---|
_splitpath |
<stdlib.h> |
_wsplitpath |
<stdlib.h> ou <wchar.h> |
Pour plus d'informations sur la compatibilité, consultez Compatibilité dans l'introduction.
Exemple
Consultez l'exemple sur _makepath.
Équivalent .NET Framework
Non applicable. Pour appeler la fonction C standard, utilisez PInvoke. Pour plus d'informations, consultez Exemples d'appel de plateforme.