_makepath
, _wmakepath
Créent un nom de chemin à partir des composants. Des versions plus sécurisées de ces fonctions sont disponibles. Consultez _makepath_s
, _wmakepath_s
.
Syntaxe
void _makepath(
char *path,
const char *drive,
const char *dir,
const char *fname,
const char *ext
);
void _wmakepath(
wchar_t *path,
const wchar_t *drive,
const wchar_t *dir,
const wchar_t *fname,
const wchar_t *ext
);
Paramètres
path
Mémoire tampon du chemin d'accès complet.
drive
Contient une lettre (A, B, etc.) correspondant au lecteur souhaité et un signe deux-points de fin facultatif. _makepath
insère automatiquement le signe deux-points dans le chemin composite s’il est manquant. Si drive
a la valeur NULL
ou pointe vers une chaîne vide, aucune lettre de lecteur ne s'affiche dans la chaîne composite path
.
dir
Contient le chemin d’accès des répertoires, sans l’indicateur de lecteur ou le nom de fichier réel. La barre oblique de fin est facultative et une barre oblique (/
) ou une barre oblique inverse (\
) ou les deux peuvent être utilisées dans un seul dir
argument. Si aucune barre oblique de fin (/
ou \
) n’est spécifiée, elle est insérée automatiquement. Si dir
a la valeur NULL
ou pointe vers une chaîne vide, aucun chemin d'accès de répertoire n'est inséré dans la chaîne composite path
.
fname
Contient le nom de fichier de base sans les extensions du nom de fichier. Si fname
a la valeur NULL
ou pointe vers une chaîne vide, aucun nom de fichier n'est inséré dans la chaîne composite path
.
ext
Contient l’extension de nom de fichier réelle, avec ou sans point de début (.
). _makepath
insère automatiquement la période si elle n’apparaît pas dans ext
. Si ext
a la valeur NULL
ou pointe vers une chaîne vide, aucune extension n'est insérée dans la chaîne composite path
.
Notes
La fonction _makepath
crée une chaîne de chemin d'accès composite à partir de chaque composant, en stockant le résultat dans path
. path
peut inclure une lettre de lecteur, un chemin de répertoire, un nom de fichier et une extension de nom de fichier. _wmakepath
est une version à caractères larges de _makepath
; les arguments de _wmakepath
sont des chaînes à caractères larges. Sinon,_wmakepath
et _makepath
se comportent de la même façon.
Remarque relative à la sécurité Utilisez une chaîne se terminant par un caractère Null. Pour éviter les dépassements de mémoire tampon, la chaîne ne doit pas dépasser la taille de la mémoire tampon path
. _makepath
ne garantit pas que la longueur de la chaîne de chemin d’accès composite ne dépasse _MAX_PATH
pas . Pour plus d’informations, consultez Solutions contre les dépassements de mémoire tampon.
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 |
---|---|---|---|
_tmakepath |
_makepath |
_makepath |
_wmakepath |
L'argument path
doit pointer vers une mémoire tampon vide suffisamment grande pour contenir le chemin d'accès complet. L'argument composite path
ne doit pas être supérieur à la constante _MAX_PATH
, définie dans Stdlib.h.
Si le chemin d’accès est NULL
, le gestionnaire de paramètres non valide est appelé, comme décrit dans la validation des paramètres. En outre, errno
prend la valeur EINVAL
. Les valeurs NULL
sont autorisées pour tous les autres paramètres.
Spécifications
Routine | En-tête requis |
---|---|
_makepath |
<stdlib.h> |
_wmakepath |
<stdlib.h> ou <wchar.h> |
Pour plus d’informations sur la compatibilité, consultez Compatibility.
Exemple
// crt_makepath.c
#include <stdlib.h>
#include <stdio.h>
int main( void )
{
char path_buffer[_MAX_PATH];
char drive[_MAX_DRIVE];
char dir[_MAX_DIR];
char fname[_MAX_FNAME];
char ext[_MAX_EXT];
_makepath( path_buffer, "c", "\\sample\\crt\\", "makepath", "c" ); // C4996
// Note: _makepath is deprecated; consider using _makepath_s instead
printf( "Path created with _makepath: %s\n\n", path_buffer );
_splitpath( path_buffer, drive, dir, fname, ext ); // C4996
// Note: _splitpath is deprecated; consider using _splitpath_s instead
printf( "Path extracted with _splitpath:\n" );
printf( " Drive: %s\n", drive );
printf( " Dir: %s\n", dir );
printf( " Filename: %s\n", fname );
printf( " Ext: %s\n", ext );
}
Path created with _makepath: c:\sample\crt\makepath.c
Path extracted with _splitpath:
Drive: c:
Dir: \sample\crt\
Filename: makepath
Ext: .c
Voir aussi
Gestion des fichiers
_fullpath
, _wfullpath
_splitpath
, _wsplitpath
_makepath_s
, _wmakepath_s