Compartir a través de


_makepath, _wmakepath

Cree un nombre de ruta de acceso desde componentes. Hay disponibles versiones más seguras de estas funciones; consulte _makepath_s, _wmakepath_s.

Sintaxis

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
);

Parámetros

path
Búfer de la ruta de acceso completa.

drive
Contiene una letra (A, B, etc.) correspondiente a la unidad deseada y un signo de dos puntos final opcional. _makepath inserta los dos puntos automáticamente en la ruta de acceso compuesta si falta. Si drive es NULL o apunta a una cadena vacía, no aparecerá ninguna letra de unidad en la cadena compuesta path.

dir
Contiene la ruta de acceso de los directorios, sin incluir el designador de unidad ni el nombre de archivo real. La barra diagonal final es opcional y una barra diagonal (/) o una barra diagonal inversa (\) o ambas pueden usarse en un único dir argumento. Si no se especifica ninguna barra diagonal final (/ o \), se inserta automáticamente. Si dir es NULL o apunta a una cadena vacía, no se insertará ninguna ruta de acceso de directorio en la cadena compuesta path.

fname
Contiene el nombre de archivo base sin ninguna extensión de nombre de archivo. Si fname es NULL o apunta a una cadena vacía, no se insertará ningún nombre de archivo en la cadena compuesta path.

ext
Contiene la extensión de nombre de archivo real, con o sin un punto inicial (.). _makepath inserta automáticamente el período si no aparece en ext. Si ext es NULL o apunta a una cadena vacía, no se insertará ninguna extensión en la cadena compuesta path.

Comentarios

La función _makepath crea una cadena de ruta de acceso compuesta a partir de componentes determinados y almacena el resultado en path. path puede incluir una letra de unidad, una ruta de directorio, el nombre de archivo y la extensión. _wmakepath es una versión con caracteres anchos de _makepath; los argumentos a _wmakepath son cadenas de caracteres anchos. Por lo demás,_wmakepath y _makepath se comportan de forma idéntica.

Nota de seguridad Use una cadena terminada en un valor nulo. Para evitar la saturación del búfer, el tamaño de la cadena terminada en un valor nulo no debe ser mayor que el del búfer path. _makepath no garantiza que la longitud de la cadena de ruta de acceso compuesta no supere _MAX_PATH. Para obtener más información, consulte Evitar saturaciones de búfer.

De manera predeterminada, el estado global de esta función está limitado a la aplicación. Para cambiar este comportamiento, consulte Estado global en CRT.

Asignaciones de rutinas de texto genérico

Rutina Tchar.h _UNICODE y _MBCS no definidos _MBCS definido _UNICODE definido
_tmakepath _makepath _makepath _wmakepath

El argumento path debe apuntar a un búfer vacío suficientemente grande para incluir la ruta de acceso completa. La path compuesta no debe ser mayor que la constante _MAX_PATH, definida en Stdlib.h.

Si path es NULL, se invoca el controlador de parámetros no válidos, como se describe en Validación de parámetros. Además, errno está establecido en EINVAL. Los valores NULL están permitidos para los demás parámetros.

Requisitos

Routine Encabezado necesario
_makepath <stdlib.h>
_wmakepath <stdlib.h> o <wchar.h>

Para obtener más información sobre compatibilidad, consulte Compatibilidad.

Ejemplo

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

Consulte también

Control de archivos
_fullpath, _wfullpath
_splitpath, _wsplitpath
_makepath_s, _wmakepath_s