_splitpath_s, _wsplitpath_s
Interrumpe un nombre de ruta en componentes.Éstas son versiones de _splitpath, _wsplitpath con mejoras de seguridad como se describe en Características de seguridad en CRT.
errno_t _splitpath_s(
const char * path,
char * drive,
size_t driveNumberOfElements,
char * dir,
size_t dirNumberOfElements,
char * fname,
size_t nameNumberOfElements,
char * ext,
size_t extNumberOfElements
);
errno_t _wsplitpath_s(
const wchar_t * path,
wchar_t * drive,
size_t driveNumberOfElements,
wchar_t *dir,
size_t dirNumberOfElements,
wchar_t * fname,
size_t nameNumberOfElements,
wchar_t * ext,
size_t extNumberOfElements
);
template <size_t drivesize, size_t dirsize, size_t fnamesize, size_t extsize>
errno_t _splitpath_s(
const char *path,
char (&drive)[drivesize],
char (&dir)[dirsize],
char (&fname)[fnamesize],
char (&ext)[extsize]
); // C++ only
template <size_t drivesize, size_t dirsize, size_t fnamesize, size_t extsize>
errno_t _wsplitpath_s(
const wchar_t *path,
wchar_t (&drive)[drivesize],
wchar_t (&dir)[dirsize],
wchar_t (&fname)[fnamesize],
wchar_t (&ext)[extsize]
); // C++ only
Parámetros
[in] path
ruta de acceso completa.[out] drive
Letra de unidad, seguida de dos puntos (:).Puede pasar NULL para este parámetro si no necesita la letra de unidad.[in] driveNumberOfElements
El tamaño del búfer de drive en un solo byte o caracteres anchos.si drive es NULL, este valor debe ser 0.[out] dir
Ruta de acceso del directorio, incluida la barra diagonal final.Las barras diagonales ( /), las barras diagonales inversas ( \ ), o ambas pueden utilizar.Puede pasar NULL para este parámetro si no necesita la ruta del directorio.[in] dirNumberOfElements
El tamaño del búfer de dir en un solo byte o caracteres anchos.si dir es NULL, este valor debe ser 0.[out] fname
Nombre de archivo base (sin extensión).Puede pasar NULL para este parámetro si no necesita el nombre de archivo.[in] nameNumberOfElements
El tamaño del búfer de fname en un solo byte o caracteres anchos.si fname es NULL, este valor debe ser 0.[out] ext
Extensión de nombre de archivo, incluido el punto principal (.). Puede pasar NULL para este parámetro si no necesita la extensión de nombre de archivo.[in] extNumberOfElements
El tamaño del búfer de ext en un solo byte o caracteres anchos.si ext es NULL, este valor debe ser 0.
Valor devuelto
cero si correctamente; un código de error del error.
condiciones de error
Condition |
Valor devuelto |
---|---|
path esNULL |
EINVAL |
drive es NULL, driveNumberOfElements es distinto de cero |
EINVAL |
drive esNULLno-, driveNumberOfElements es cero |
EINVAL |
dir es NULL, dirNumberOfElements es distinto de cero |
EINVAL |
dir esNULLno-, dirNumberOfElements es cero |
EINVAL |
fname es NULL, nameNumberOfElements es distinto de cero |
EINVAL |
fname esNULLno-, nameNumberOfElements es cero |
EINVAL |
ext es NULL, extNumberOfElements es distinto de cero |
EINVAL |
ext esNULLno-, extNumberOfElements es cero |
EINVAL |
Si es un de los sobre condiciones aparece, el controlador no válido de parámetro se invoca, como se describe en Validación de parámetros .Si la ejecución puede continuar, este errno establecido funciones a EINVAL y a EINVALreturn.
Si los búferes cualquiera de los son demasiado cortos contener el resultado, estas funciones desactive todos los búferes a cadenas vacías, establecen errno a ERANGE, y devuelven ERANGE.
Comentarios
La función de _splitpath_sinterrumpe una ruta en los cuatro componentes._splitpath_scontrola automáticamente argumentos de cadena de caracteres multibyte según corresponda, reconociendo secuencias de caracteres multibyte según la página de códigos multibyte actualmente en uso._wsplitpath_ses una versión con caracteres anchos de _splitpath_s; los argumentos de _wsplitpath_sson cadenas de caracteres.Estas funciones se comportan exactamente igual de otra forma
Asignaciones de la rutina de texto genérico
rutina de TCHAR.H |
_UNICODE y _MBCS no definido |
_MBCS definido |
_UNICODE definido |
---|---|---|---|
_tsplitpath_s |
_splitpath_s |
_splitpath_s |
_wsplitpath_s |
Almacena en cada componente de la ruta de acceso completa en un búfer independiente; las constantes del manifiesto _MAX_DRIVE, _MAX_DIR, _MAX_FNAME, y _MAX_EXT(definido en STDLIB.H) especifique el tamaño máximo permitido para cada componente del archivo.Los componentes de archivo mayores que las constantes de manifiesto correspondientes producen daños en la pila.
La tabla siguiente se enumeran los valores de las constantes del manifiesto.
Name |
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_s asigna una cadena vacía al búfer correspondiente.
En C++, mediante estas funciones es simplificado con sobrecargas de plantilla; las sobrecargas pueden deducir longitud de búfer automáticamente, lo que elimina la necesidad de especificar un argumento size.Para obtener más información, vea Sobrecargas de plantilla de seguridad.
Las versiones de depuración de estas funciones primero rellenan el búfer con 0xFD.Para deshabilitar este comportamiento, use _CrtSetDebugFillThreshold.
Requisitos
rutina |
Encabezado necesario |
---|---|
_splitpath_s |
<stdlib.h> |
_wsplitpath_s |
<stdlib.h> o <wchar.h> |
Para obtener información adicional de compatibilidad, vea compatibilidad en la Introducción.
Ejemplo
Vea el ejemplo para _makepath_s, _wmakepath_s.
Equivalente en .NET Framework
No es aplicable Para llamar a la función estándar de C, utilice PInvoke. Para obtener más información, vea La invocación de plataforma ejemplos.