_makepath, _wmakepath
Cree un nombre de ruta de componentes.Versiones más seguras de estas funciones están disponibles; vea _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
);
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 el dos puntos automáticamente en la ruta compuesta si falta.Si drive es NULL o puntos en una cadena vacía, ninguna letra de unidad aparece en la cadena compuesta de path .dir
Contiene la ruta de acceso de los directorios, sin incluir el designador de unidad o el nombre del archivo.La barra diagonal final es opcional, y una barra diagonal (/) o una barra diagonal inversa (\) o ambas podrían usar en un solo argumento de dir .si no se especifica ninguna barra diagonal final (/o \), se inserta automáticamente.Si dir es NULL o puntos en una cadena vacía, no se inserta ninguna ruta de directorio en la cadena compuesta de path .fname
Contiene el nombre de archivo base sin ninguna extensiones.Si fname es NULL o puntos en una cadena vacía, no se insertará ningún nombre de archivo en la cadena compuesta de path .ext
Contiene la extensión de nombre de archivo real, con o sin un punto principal (.)._makepath inserta el período automáticamente si no aparece en ext.Si ext es NULL o puntos en una cadena vacía, no se inserta extensiones en la cadena compuesta de path .
Comentarios
La función de _makepath crea una cadena compuesta de la ruta de acceso de los componentes individuales, almacenar el resultado en path.path podría incluir una letra de unidad, una ruta de acceso del directorio, un nombre de archivo, y una extensión de nombre de archivo._wmakepath es una versión con caracteres anchos de _makepath; los argumentos de _wmakepath son cadenas de caracteres._wmakepath y _makepath se comportan exactamente igual de otra manera.
Uso de la Nota de seguridaduna cadena terminada en null.Para evitar la saturación del búfer, la cadena terminada en null no debe superar el tamaño del búfer de path ._makepath no garantiza que la longitud de la cadena compuesta de la ruta no supere _MAX_PATH.Para obtener más información, vea Para evitar las saturaciones del búfer.
Asignaciones de la rutina de texto genérico
rutina de Tchar.h |
_UNICODE y _MBCS no definido |
_MBCS definido |
_UNICODE definido |
---|---|---|---|
_tmakepath |
_makepath |
_makepath |
_wmakepath |
El argumento de path debe señalar a un búfer vacío suficientemente grande para contener la ruta completa.path compuesto debe ser menor que la constante de _MAX_PATH , definido en Stdlib.h.
Si la ruta de acceso es NULL, se invoca el controlador no válido de parámetro, tal y como se describe en Validación de parámetros.Además, errno se establece en EINVAL.los valores deNULL se permiten todos los demás parámetros.
Requisitos
rutina |
Encabezado necesario |
---|---|
_makepath |
<stdlib.h> |
_wmakepath |
<stdlib.h> o <wchar.h> |
Para obtener más información de compatibilidad, vea compatibilidad en la Introducción.
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 );
}