Exportar (0) Imprimir
Expandir todo
and
div
eof
not
or
xor
Expandir Minimizar
Este artículo proviene de un motor de traducción automática. Mueva el puntero sobre las frases del artículo para ver el texto original. Más información.
Traducción
Original

strlen, strlen_l, wcslen, wcslen_l, _mbslen, _mbslen_l, _mbstrlen, _mbstrlen_l

Obtiene la longitud de una cadena usando la configuración regional actual o una configuración regional especificada. Hay disponibles versiones más seguras de estas funciones; vea strnlen, strnlen_s, strnlen_l, wcsnlen, wcsnlen_s, wcsnlen_l, _mbsnlen, _mbsnlen_l, _mbstrnlen, _mbstrnlen_l.

Nota importante Importante

_mbslen, _mbslen_l, _mbstrlen y _mbstrlen_l no se pueden usar en aplicaciones que se ejecutan en Windows en tiempo de ejecución. Para obtener más información, vea Funciones de CRT no admitidas con /ZW.

size_t strlen(
   const char *str
);
size_t strlen_l(
   const char *str,
   _locale_t locale 
);
size_t wcslen(
   const wchar_t *str 
);
size_t wcslen_l(
   const wchar_t *str,
   _locale_t locale
);
size_t _mbslen(
   const unsigned char *str 
);
size_t _mbslen_l(
   const unsigned char *str,
   _locale_t locale
);
size_t _mbstrlen(
   const char *str
);
size_t _mbstrlen_l(
   const char *str,
   _locale_t locale
);

str

Cadena terminada en un valor nulo.

locale

Configuración regional que se va a usar.

Cada una de estas funciones devuelve el número de caracteres de str, sin incluir el carácter NULL de terminación. No se reserva ningún valor devuelto para indicar un error, a excepción de _mbstrlen, que devuelve ((size_t)(-1)) si la cadena contiene un carácter multibyte no válido.

strlen interpreta la cadena como una cadena de caracteres de un solo byte, de modo que el valor devuelto siempre es igual al número de bytes, incluso si la cadena contiene caracteres multibyte. wcslen es una versión con caracteres anchos de strlen; el argumento de wcslen es una cadena de caracteres anchos y el recuento de caracteres está en caracteres anchos (de dos bytes). Por lo demás, wcslen y strlen se comportan de forma idéntica.

Nota de seguridad    Estas funciones representan una posible amenaza por un problema de 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, vea Evitar saturaciones del búfer.

Asignaciones de rutina de texto genérico

Rutina TCHAR.H

_UNICODE y _MBCS no definidos

_MBCS definido

_UNICODE definido

_tcslen

strlen

strlen

wcslen

_tcsclen

strlen

_mbslen

wcslen

_tcsclen_l

strlen_l

_mbslen_l

wcslen_l

_mbslen ,_mbslen_l, _mbstrleny_mbstrlen_l devuelven el número de caracteres multibyte de una cadena de caracteres multibyte, pero no comprueban la validez de los caracteres multibyte. _mbstrlen y_mbstrlen_l comprueban la validez de los caracteres multibyte y reconocen secuencias de caracteres multibytesetlocale, _wsetlocale. Si la cadena que se pasa a _mbstrlen o_mbstrlen_l contiene un carácter multibyte no válido para la página de códigos, devuelve -1 y establece errno en EILSEQ.

El valor de salida se ve afectado por el valor de la categoría LC_CTYPE de la configuración regional; vea setlocale para obtener más información. Las versiones de estas funciones sin el sufijo _l usan la configuración regional actual de su comportamiento dependiente de la configuración regional; las versiones con el sufijo _l son idénticas salvo que usan el parámetro locale pasado en su lugar. Para obtener más información, vea Configuración regional.

Rutina

Encabezado necesario

strlen

<string.h>

strlen_l

<string.h>

wcslen , wcslen_l

<string.h> o <wchar.h>

_mbslen , _mbslen_l

<mbstring.h>

_mbstrlen , _mbstrlen_l

<stdlib.h>

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

// crt_strlen.c
// Determine the length of a string. For the multi-byte character
// example to work correctly, the Japanese language support for
// non-Unicode programs must be enabled by the operating system.


#include <string.h>
#include <locale.h>

int main()
{
   char* str1 = "Count.";
   wchar_t* wstr1 = L"Count.";
   char * mbstr1;
   char * locale_string;

   // strlen gives the length of single-byte character string
   printf("Length of '%s' : %d\n", str1, strlen(str1) );

   // wstrlen gives the length of a wide character string
   wprintf(L"Length of '%s' : %d\n", wstr1, wcslen(wstr1) );

   // A multibyte string: [A] [B] [C] [katakana A] [D] [\0]
   // in Code Page 932. For this example to work correctly,
   // the Japanese language support must be enabled by the
   // operating system.
   mbstr1 = "ABC" "\x83\x40" "D";

   locale_string = setlocale(LC_CTYPE, "Japanese_Japan");

   if (locale_string == NULL)
   {
      printf("Japanese locale not enabled. Exiting.\n");
      exit(1);
   }
   else
   {
      printf("Locale set to %s\n", locale_string);
   }

   // _mbslen will recognize the Japanese multibyte character if the
   // current locale used by the operating system is Japanese
   printf("Length of '%s' : %d\n", mbstr1, _mbslen(mbstr1) );

   // _mbstrlen will recognize the Japanese multibyte character
   // since the CRT locale is set to Japanese even if the OS locale
   // isnot. 
   printf("Length of '%s' : %d\n", mbstr1, _mbstrlen(mbstr1) );
   printf("Bytes in '%s' : %d\n", mbstr1, strlen(mbstr1) );   
  
}
Longitud de 'Count'. : 6
Longitud de 'Count'. : 6
Longitud de 'ABCァD' : 5
Longitud de 'ABCァD' : 5
Bytes de 'ABCァD' : 6

Adiciones de comunidad

AGREGAR
Mostrar:
© 2014 Microsoft