_makepath
, _wmakepath
Créent un nom de chemin à partir des composants. Des versions plus sécurisées de ces fonctions sont disponibles ; voir _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 Éviter 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 routine de texte générique
Routine Tchar.h | _UNICODE et _MBCS non défini |
_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
Commentaires
https://aka.ms/ContentUserFeedback.
Bientôt disponible : Tout au long de 2024, nous allons supprimer progressivement GitHub Issues comme mécanisme de commentaires pour le contenu et le remplacer par un nouveau système de commentaires. Pour plus d’informations, consultezEnvoyer et afficher des commentaires pour