_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