Share via


strnlen, los strnlen_s, strnlen_l, wcsnlen, los wcsnlen_s, wcsnlen_l, _mbsnlen, _mbsnlen_l, _mbstrnlen, _mbstrnlen_l

Obtiene la longitud de una cadena con la configuración regional o la actual que se ha pasado.Éstas son versiones más seguras de strlen, strlen_l, wcslen, wcslen_l, _mbslen, _mbslen_l, _mbstrlen, _mbstrlen_l.

Nota importanteImportante

_mbsnlen, _mbsnlen_l, _mbstrnlen, y _mbstrnlen_l no se pueden utilizar en las aplicaciones que se ejecutan en Windows en tiempo de ejecución.Para obtener más información, vea Funciones CRT no compatibles con /ZW.

size_t strnlen(
   const char *str,
   size_t numberOfElements 
);
size_t strnlen_s(
   const char *str,
   size_t numberOfElements 
);
size_t strnlen_l(
   const char *str,
   size_t numberOfElements,
   _locale_t locale
);
size_t wcsnlen(
   const wchar_t *str,
   size_t numberOfElements
);
size_t wcsnlen_s(
   const wchar_t *str,
   size_t numberOfElements
);
size_t wcsnlen_l(
   const wchar_t *str,
   size_t numberOfElements,
   _locale_t locale
);
size_t _mbsnlen(
   const unsigned char *str,
   size_t numberOfElements
);
size_t _mbsnlen_l(
   const unsigned char *str,
   size_t numberOfElements,
   _locale_t locale
);
size_t _mbstrnlen(
   const char *str,
   size_t numberOfElements
);
size_t _mbstrnlen_l(
   const char *str,
   size_t numberOfElements,
   _locale_t locale
);

Parámetros

  • str
    Cadena terminada en null.

  • numberOfElements
    El tamaño del búfer de cadena.

  • locale
    Configuración regional a utilizar.

Valor devuelto

Estas funciones devuelven el número de caracteres de la cadena, sin incluir el carácter null de terminación.Si no hay ningún terminador nulo dentro de los primeros bytes de numberOfElements de la cadena (o de caracteres anchos para wcsnlen), después numberOfElements se devuelve para indicar la condición de error; las cadenas terminadas en null tienen longitudes que son estrictamente menor que numberOfElements.

_mbstrnlen y _mbstrnlen_l devuelve -1 si la cadena contiene un carácter no válido multibyte.

Comentarios

[!NOTA]

strnlen no es un reemplazo para strlen; strnlen está diseñado para usarse para calcular solo el tamaño de datos que no son de confianza de entrada en un búfer de conocido calibre- para el ejemplo, un paquete de red.strnlen calcula la longitud pero no recorre del fin del búfer si la cadena es e indefinida.En otras situaciones, utilice strlen.(El mismo se aplica a wcsnlen, a _mbsnlen, y a _mbstrnlen.)

Cada una de estas funciones devuelve el número de caracteres de str, sin incluir el carácter null de terminación.Sin embargo, strnlen y strnlen_l interpretan la cadena como una cadena de caracteres de solo- byte y por consiguiente, el valor devuelto siempre es igual al número de bytes, incluso si la cadena contiene caracteres multibyte.wcsnlen y wcsnlen_l son versiones de caracteres anchos de strnlen y de strnlen_l respectivamente; los argumentos para wcsnlen y wcsnlen_l son cadenas de caracteres y el recuento de caracteres está en unidades de caracteres anchos.Si no, wcsnlen, wcsnlen_l, strnlen y strnlen_l se comportan exactamente igual.

strnlen, wcsnlen, y _mbsnlen no validan sus parámetros.Si str es NULL, una infracción de acceso.

strnlen_s y wcsnlen_s validan sus parámetros.Si str es NULL, devuelven 0 de funciones.

_mbstrnlen también valida sus parámetros.Si str es NULL, o si numberOfElements es mayor que INT_MAX, _mbstrnlen genera una excepción no válida del parámetro, como se describe en Validación de parámetros.Si la ejecución puede continuar, _mbstrnlen establece errno a EINVAL y devuelve -1.

Asignaciones de la rutina de Genérico- texto

Rutina de TCHAR.H

_UNICODE y _MBCS no definidos

_MBCS definido

_UNICODE definido

_tcsnlen

strnlen

strnlen

wcsnlen

_tcscnlen

strnlen

_mbsnlen

wcsnlen

_tcscnlen_l

strnlen_l

_mbsnlen_l

wcsnlen_l

_mbsnlen y _mbstrnlen devuelve el número de caracteres multibyte en una cadena de multibyte- carácter._mbsnlen reconoce secuencias de multibyte- carácter según la página de códigos multibyte que está actualmente en uso o según la configuración regional que se pasa; no comprueba la validez del multibyte- carácter._mbstrnlen prueba para la validez del multibyte- carácter y reconoce secuencias de multibyte- carácter.Si la cadena que se pasa a _mbstrnlen contiene un carácter no válido multibyte, errno se establece en EILSEQ.

El valor de salida se ve afectado por el valor de la categoría de LC_CTYPE de configuración regional; vea setlocale, _wsetlocale para obtener más información.Las versiones de estas funciones son idénticas, excepto en que las que no tienen el uso del sufijo de _l la configuración regional actual para este comportamiento configuración regional- dependiente y versiones que tienen el sufijo de _l en su lugar utilice el parámetro de configuración regional que se pasa.Para obtener más información, vea Configuración regional.

Requisitos

Rutina

Encabezado necesario

strnlen, strnlen_s, strnlen_l

<string.h>

wcsnlen, wcsnlen_s, wcsnlen_l

<string.h> o <wchar.h>

_mbsnlen, _mbsnlen_l

<mbstring.h>

_mbstrnlen, _mbstrnlen_l

<stdlib.h>

Para obtener información adicional de compatibilidad, vea Compatibilidad.

Ejemplo

// crt_strnlen.c

#include <string.h>

int main()
{
   // str1 is 82 characters long. str2 is 159 characters long 

   char* str1 = "The length of a string is the number of characters\n"
               "excluding the terminating null.";
   char* str2 = "strnlen takes a maximum size. If the string is longer\n"
                "than the maximum size specified, the maximum size is\n"
                "returned rather than the actual size of the string.";
   size_t len;
   size_t maxsize = 100;

   len = strnlen(str1, maxsize);
   printf("%s\n Length: %d \n\n", str1, len);
   
   len = strnlen(str2, maxsize);
   printf("%s\n Length: %d \n", str2, len);
}
  
  
  
  

Equivalente en .NET Framework

System::String::Length

Vea también

Referencia

Manipulación de cadenas (CRT)

Configuración regional

Interpretación de secuencias de Multibyte- Carácter

setlocale, _wsetlocale

strncat, _strncat_l, wcsncat, wcsncat_l, _mbsncat _mbsncat_l

strncmp, wcsncmp, _mbsncmp, _mbsncmp_l

funciones de strcoll

strncpy_s, _strncpy_s_l, wcsncpy_s, _wcsncpy_s_l, _mbsncpy_s, _mbsncpy_s_l

strrchr, wcsrchr, _mbsrchr, _mbsrchr_l

_strset, _strset_l, _wcsset, _wcsset_l, _mbsset, _mbsset_l

strspn, wcsspn, _mbsspn, _mbsspn_l