strlen, strnlen_s
From cppreference.net
|
Definido en el encabezado
<string.h>
|
||
|
size_t
strlen
(
const
char
*
str
)
;
|
(1) | |
| (2) | (desde C11) | |
1)
Devuelve la longitud de la cadena de bytes terminada en nulo dada, es decir, el número de caracteres en un array de caracteres cuyo primer elemento está apuntado por
str
hasta y sin incluir el primer carácter nulo.
El comportamiento es indefinido si
str
no es un puntero a una cadena de bytes terminada en nulo.
2)
Igual que
(1)
, excepto que la función retorna cero si
str
es un puntero nulo y retorna
strsz
si el carácter nulo no fue encontrado en los primeros
strsz
bytes de
str
.
El comportamiento es indefinido si
str
no es un puntero a una cadena de bytes terminada en nulo y
strsz
es mayor que el tamaño de ese arreglo de caracteres.
-
Como con todas las funciones con verificación de límites,
strnlen_ssolo está garantizada su disponibilidad si __STDC_LIB_EXT1__ está definido por la implementación y si el usuario define __STDC_WANT_LIB_EXT1__ como la constante entera 1 antes de incluir <string.h> .
Contenidos |
Parámetros
| str | - | puntero a la cadena de bytes terminada en nulo que se examinará |
| strsz | - | número máximo de caracteres a examinar |
Valor de retorno
1)
La longitud de la cadena de bytes terminada en nulo
str
.
2)
La longitud de la cadena de bytes terminada en nulo
str
en caso de éxito, cero si
str
es un puntero nulo,
strsz
si no se encontró el carácter nulo.
Notas
strnlen_s
y
wcsnlen_s
son las únicas
funciones con verificación de límites
que no invocan el manejador de restricciones en tiempo de ejecución. Son funciones de utilidad puras utilizadas para proporcionar soporte limitado para cadenas no terminadas en nulo.
Ejemplo
Ejecutar este código
#define __STDC_WANT_LIB_EXT1__ 1 #include <stdio.h> #include <string.h> int main(void) { const char str[] = "How many characters does this string contain?"; printf("without null character: %zu\n", strlen(str)); printf("with null character: %zu\n", sizeof str); #ifdef __STDC_LIB_EXT1__ printf("without null character: %zu\n", strnlen_s(str, sizeof str)); #endif }
Salida posible:
without null character: 45 with null character: 46 without null character: 45
Referencias
- Estándar C23 (ISO/IEC 9899:2024):
-
- 7.24.6.3 La función strlen (p: TBD)
-
- K.3.7.4.4 La función strnlen_s (p: TBD)
- Estándar C17 (ISO/IEC 9899:2018):
-
- 7.24.6.3 La función strlen (p: TBD)
-
- K.3.7.4.4 La función strnlen_s (p: TBD)
- Estándar C11 (ISO/IEC 9899:2011):
-
- 7.24.6.3 La función strlen (p: 372)
-
- K.3.7.4.4 La función strnlen_s (p: 623)
- Estándar C99 (ISO/IEC 9899:1999):
-
- 7.21.6.3 La función strlen (p: 334)
- Estándar C89/C90 (ISO/IEC 9899:1990):
-
- 4.11.6.3 La función strlen
Véase también
|
(C95)
(C11)
|
devuelve la longitud de una cadena ancha
(función) |
|
devuelve el número de bytes en el siguiente carácter multibyte
(función) |
|
|
Documentación de C++
para
strlen
|
|