_makepath_s, _wmakepath_s

crée un nom de chemin d'accès des composants.Ce sont des versions de _makepath, _wmakepath avec des améliorations de sécurité comme décrit dans Fonctionnalités de sécurité du CRT.

errno_t _makepath_s(
   char *path,
   size_t sizeInBytes,
   const char *drive,
   const char *dir,
   const char *fname,
   const char *ext 
);
errno_t _wmakepath_s(
   wchar_t *path,
   size_t sizeInWords,
   const wchar_t *drive,
   const wchar_t *dir,
   const wchar_t *fname,
   const wchar_t *ext 
);
template <size_t size>
errno_t _makepath_s(
   char (&path)[size],
   const char *drive,
   const char *dir,
   const char *fname,
   const char *ext 
); // C++ only
template <size_t size>
errno_t _wmakepath_s(
   wchar_t (&path)[size],
   const wchar_t *drive,
   const wchar_t *dir,
   const wchar_t *fname,
   const wchar_t *ext 
); // C++ only

Paramètres

  • [out] path
    mémoire tampon de chemin complet.

  • [in] sizeInWords
    taille de la mémoire tampon dans les mots.

  • [in] sizeInBytes
    taille de la mémoire tampon en octets.

  • [in] drive
    Contient un caractère alphabétique (A, B, etc.) correspondant au lecteur approprié et à un deux-points de fin facultatif._makepath_s insère les deux-points automatiquement dans le chemin d'accès composite s'il manque.Si drive est NULL ou pointe vers une chaîne vide, aucune lettre de lecteur n'apparaît dans la chaîne composée d' path .

  • [in] dir
    Contient le chemin d'accès des répertoires, sans inclure l'indicateur d'un lecteur ou le nom de fichier réel.La barre oblique finale est facultative, et une barre oblique (/) ou une barre oblique inverse (\) ou les deux peuvent être utilisées dans un seul argument d' dir .Si aucune barre oblique finale (l'/ou \) n'est spécifiée, il est inséré automatiquement.Si dir est NULL ou pointe vers une chaîne vide, aucun chemin d'accès n'est inséré dans la chaîne composée d' path .

  • [in] fname
    ne contient le nom de fichier de base sans aucune extension de nom de fichier.Si fname est NULL ou pointe vers une chaîne vide, aucun nom de fichier n'est inséré dans la chaîne composée d' path .

  • [in] ext
    Contient l'extension de nom de fichier réelle, avec ou sans une principale point (.)._makepath_s insère la période automatiquement s'il ne s'affiche pas dans ext.Si ext est NULL ou pointe vers une chaîne vide, aucune extension n'est insérée dans la chaîne composée d' path .

Valeur de retour

Zéro si l'opération a réussi ; code d'erreur en cas de échec.

conditions d'erreur

path

sizeInWords / sizeInBytes

Return

contenu d' path

NULL

quels

EINVAL

non modifié

quels

<= 0

EINVAL

non modifié

Si l'un des au-dessus de les conditions d'erreur se produit, ces fonctions appellent le gestionnaire de paramètre non valide, comme décrit dans Validation des paramètres.Si est autorisé à l'exécution de se poursuivre, errno estdéfini àEINVAL et retourneEINVAL**.** NULL de fonctions est autorisé pour les paramètres drive, fname, et ext.Pour plus d'informations sur le comportement lorsque ces paramètres sont des pointeurs null ou des chaînes vides, consultez la section Notes.

Notes

La fonction d' _makepath_s crée une chaîne composée de chemin d'accès de différents composants, en enregistrant le résultat dans path.path peut inclure une lettre de lecteur, un chemin d'accès du répertoire, un nom de fichier, et une extension de nom de fichier._wmakepath_s est une version à caractère élargi d' _makepath_s; les arguments à _wmakepath_s sont des chaînes à caractères larges._wmakepath_s et _makepath_s se comportent de sinon.

mappages de routines de texte générique

routine de Tchar.h

_UNICODE et _MBCS non définis

_MBCS défini

_UNICODE défini

_tmakepath_s

_makepath_s

_makepath_s

_wmakepath_s

L'argument d' path doit pointer vers une mémoire tampon vide suffisamment grande pour contenir le chemin d'accès complet.path composite ne doit pas dépasser grand que la constante d' _MAX_PATH , définie par Stdlib.h.

si le chemin d'accès est NULL, le gestionnaire de paramètre non valide est appelé, comme décrit dans Validation des paramètres.en outre, errno est défini à EINVAL.il permet des valeurs d'NULL pour tous les autres paramètres.

En C++, à l'aide de ces fonctions est simplifié par des surcharges de modèle ; les surcharges peuvent également déduire la longueur de la mémoire tampon automatiquement (en éliminant le besoin de spécifier un argument de taille) et peuvent remplacer automatiquement des fonctions plus anciennes et non sécurisées par leurs nouvelles, sécurisées équivalents.Pour plus d'informations, consultez Surcharges sécurisées de modèle.

Les versions debug de ces fonctions exécutent d'abord mémoire tampon avec 0xFD.Pour désactiver ce comportement, utilisez _CrtSetDebugFillThreshold.

Configuration requise

routine

en-tête requis

_makepath_s

<stdlib.h>

_wmakepath_s

<stdlib.h> ou <wchar.h>

Pour plus d'informations de compatibilité, consultez compatibilité dans l'introduction.

Exemple

// crt_makepath_s.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];
   errno_t err;

   err = _makepath_s( path_buffer, _MAX_PATH, "c", "\\sample\\crt\\",
                      "crt_makepath_s", "c" );
   if (err != 0)
   {
      printf("Error creating path. Error code %d.\n", err);
      exit(1);
   }
   printf( "Path created with _makepath_s: %s\n\n", path_buffer );
   err = _splitpath_s( path_buffer, drive, _MAX_DRIVE, dir, _MAX_DIR, fname,
                       _MAX_FNAME, ext, _MAX_EXT );
   if (err != 0)
   {
      printf("Error splitting the path. Error code %d.\n", err);
      exit(1);
   }
   printf( "Path extracted with _splitpath_s:\n" );
   printf( "  Drive: %s\n", drive );
   printf( "  Dir: %s\n", dir );
   printf( "  Filename: %s\n", fname );
   printf( "  Ext: %s\n", ext );
}

Sortie

Path created with _makepath_s: c:\sample\crt\crt_makepath_s.c

Path extracted with _splitpath_s:
  Drive: c:
  Dir: \sample\crt\
  Filename: crt_makepath_s
  Ext: .c

Équivalent .NET Framework

System : : E/S : : fichier : : Create

Voir aussi

Référence

Gestion de fichiers

_fullpath, _wfullpath

_splitpath_s, _wsplitpath_s

_makepath, _wmakepath