Compartir por


_splitpath, _wsplitpath

Divida una ruta de acceso a los componentes. Para obtener versiones más seguras de estas funciones, vea _splitpath_s, _wsplitpath_s.

Sintaxis

void _splitpath(
   const char *path,
   char *drive,
   char *dir,
   char *fname,
   char *ext
);
void _wsplitpath(
   const wchar_t *path,
   wchar_t *drive,
   wchar_t *dir,
   wchar_t *fname,
   wchar_t *ext
);

Parámetros

path
Ruta de acceso completa.

drive
Letra de unidad, seguida de dos puntos (:). Puede pasar NULL para este parámetro si no necesita la letra de unidad.

dir
Ruta de directorio, incluida la barra diagonal final. Se pueden usar las barras diagonales (/), las barras diagonales inversas (\) o ambas. Pase NULL este parámetro si no necesita la ruta de acceso del directorio.

fname
Nombre de archivo base (sin extensión). Pase NULL este parámetro si no necesita el nombre de archivo.

ext
Extensión de nombre de archivo, incluido el punto inicial (.). Pase NULL este parámetro si no necesita la extensión de nombre de archivo.

Comentarios

La función _splitpath divide una ruta de acceso en los cuatro componentes respectivos. _splitpath controla automáticamente argumentos de cadenas de caracteres multibyte según corresponda, reconociendo secuencias de caracteres multibyte según la página de códigos multibyte actualmente en uso. _wsplitpath es una versión con caracteres anchos de _splitpath; los argumentos a _wsplitpath son cadenas de caracteres anchos. Por lo demás, estas funciones se comportan exactamente igual.

Nota de seguridad Estas funciones están sujetas a la saturación del búfer. Los problemas de saturación del búfer son un método frecuente de ataque del sistema, que produce una elevación de privilegios no justificada. Para obtener más información, consulte Evitar saturaciones del búfer. Hay disponibles versiones más seguras de estas funciones; consulte _splitpath_s, _wsplitpath_s.

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
_tsplitpath _splitpath _splitpath _wsplitpath

Cada componente de la ruta de acceso completa se almacena en un búfer aparte; las constantes de manifiesto _MAX_DRIVE, _MAX_DIR, _MAX_FNAME y _MAX_EXT (definidas en STDLIB.H) especifican el tamaño máximo para cada componente de archivo. Los componentes de archivos que son más grandes que las constantes de manifiesto correspondientes provocan daños en el montón.

Cada búfer debe ser igual de grande que la constante de manifiesto correspondiente con el fin de evitar posibles saturaciones en los búferes.

En la tabla siguiente se enumeran los valores de las constantes de manifiesto.

NOMBRE Valor
_MAX_DRIVE 3
_MAX_DIR 256
_MAX_FNAME 256
_MAX_EXT 256

Si la ruta de acceso completa no contiene un componente (por ejemplo, un nombre de archivo), _splitpath asigna cadenas vacías a los búferes correspondientes.

Puede pasar NULL a _splitpath para cualquier parámetro que path no sea necesario.

Si path es NULL, se invoca el controlador de parámetros no válidos, tal y como se describe en Validación de parámetros. Si la ejecución puede continuar, errno se establece en EINVAL.

Requisitos

Routine Encabezado necesario
_splitpath <stdlib.h>
_wsplitpath <stdlib.h> o <wchar.h>

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

Ejemplo

Vea el ejemplo de _makepath.

Consulte también

Control de archivos
_fullpath, _wfullpath
_getmbcp
_makepath, _wmakepath
_setmbcp
_splitpath_s, _wsplitpath_s