_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_PATHpas . 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