Share via


_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.

Vea también

Referencia

El control de archivo

_splitpath, _wsplitpath

_fullpath, _wfullpath

_getmbcp

_makepath, _wmakepath

_setmbcp