_makepath, _wmakepath

 

Pour obtenir la dernière documentation sur Visual Studio 2017, consultez Documentation Visual Studio 2017.

Créer un nom de chemin d’accès à partir de composants. Des versions plus sécurisées de ces fonctions sont disponibles. consultez la page _makepath_s, _wmakepath_s.

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 d'accès 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 (/ ou \) 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 initial (.). _makepath insère automatiquement le point s'il 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.

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. Le path peut inclure une lettre de lecteur, chemin d’accès, nom de fichier et 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.

Note de sécurité utilisent une chaîne terminée par null. Pour éviter les dépassements de mémoire tampon, la chaîne ne doit pas dépasser la taille de la path mémoire tampon. _makepathne garantit pas que la longueur de la chaîne de chemin d’accès composite ne dépasse pas _MAX_PATH. Pour plus d’informations, consultez Solutions contre les dépassements de mémoire tampon.

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ètre non valide est appelé, comme décrit dans Validation de paramètre. En outre, errno prend la valeur EINVAL. Les valeurs NULL sont autorisées pour tous les autres paramètres.

RoutineEn-tête requis
_makepath<stdlib.h>
_wmakepath<stdlib.h> ou <wchar.h>

Pour plus d’informations sur la compatibilité, consultez Compatibility dans l’introduction.

// 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  

System::IO::file :: créer

Gestion de fichiers
_fullpath, _wfullpath
_splitpath, _wsplitpath
_makepath_s, _wmakepath_s

Afficher: