¿Se define strlen(const char *s)
cuando s
no tiene terminación nula? De ser así, ¿qué devuelve?strlen() en cadena de caracteres no terminada en nulo?
Respuesta
No, no está definido. Puede provocar una infracción de acceso a la memoria, ya que seguirá contando hasta que llegue al primer byte de memoria cuyo valor es 0.
También puede hacer que los demonios salgan por la nariz. http://catb.org/jargon/html/N/nasal-demons.html –
Eso explica mis fosas nasales doloridas. –
Devolverá el número de caracteres encontrados antes de que se encuentre '\ 0'.
....... o no. – alk
No está definido. Causa un comportamiento indefinido, lo que significa que cualquier cosa puede suceder, lo más probable es que su programa se bloquee.
Siempre está definido.
Devolverá la longitud de la "cadena" hasta que llegue a un byte con un nulo en ella. Mala idea porque esto puede causar un desbordamiento del búfer.
No, no está definido. Una vez que comienzas a atravesar el espacio asignado para la cadena, ya sea a través de malloc o en la pila/pila, los resultados están estrictamente indefinidos. –
de la norma C99:
La función strlen devuelve el número de caracteres que preceden a la terminación de carácter nulo.
Si no hay un carácter nulo, significa que el resultado no está definido.
No realmente, y causará bad things.
strlen() solo funciona (hace algo útil) en cadenas terminadas en nulo; obtendrás un resultado completamente indefinido si pasas algo más que eso. Si tiene suerte, no causará un bloqueo :)
corrección, si tiene suerte se bloqueará. No querrá que este tipo de error pase desapercibido :-P. –
Si su cadena no está terminada en NUL, la función seguirá buscando hasta que encuentre una.
Si tiene suerte, esto hará que su programa falle.
Si no tiene suerte, obtendrá un largo más grande de lo esperado, con muchos valores "inesperados".
hombre 3 strcspn
size_t strcspn (const char * s, char const * rechazan);
Una longitud de las cadenas de colon delimitado:
size_t len = strcspn(str, ":");
Una longitud de las cadenas delimitados por comas:
size_t len = strcspn(str, ",");
Una longitud de las cadenas delimitados por tabuladores:
size_t len = strcspn(str, "\t");
- 1. Cadena terminada en nulo
- 2. Lectura de una cadena terminada en nulo
- 3. ¿Qué es una cadena terminada en nulo?
- 4. ¿Cómo imprimo una cadena no terminada en nulo usando printf?
- 5. ¿Por qué cadenas terminadas en nulo? O: terminada en nulo vs almacenamiento de caracteres + longitud
- 6. Obtención de cadena terminada en nulo desde System.Text.Encoding.Unicode.GetString
- 7. ¿std :: string :: c_str() siempre devuelve una cadena terminada en nulo?
- 8. Cadena terminada en cero doble
- 9. copia no terminada en nulo matriz de caracteres sin signo a std :: string
- 10. ¿Hay un equivalente strtol que no requiera una cadena terminada en nulo?
- 11. ¿Cómo obtener una cadena terminada nula de una cadena C#?
- 12. ¿Cómo puedo convertir una cadena terminada en nulo en un buffer de byte a una cadena en Go? Este
- 13. ¿Está utilizando strlen() en la condición de bucle más lento que simplemente buscando el carácter nulo?
- 14. /bin/sh: Error de sintaxis: cadena entrecomillada no terminada
- 15. Uso de printf con una cadena terminada no nula
- 16. PHP: ¿por qué no cuenta() trabajo como strlen() en una cadena?
- 17. Cómo imprimir una cadena terminada en nulo con líneas nuevas sin mostrar escapes de barra invertida en gdb?
- 18. ¿Cómo encontrar longitud de cadena en php sin usar strlen()?
- 19. no terminada directiva condicional en Xcode
- 20. strlen() implementación en gcc
- 21. strlen, mb_strlen, ¿cuál usar?
- 22. PHP: iterar en los caracteres de cadena
- 23. javascript valor nulo en cadena
- 24. ¿Hay una versión segura de strlen?
- 25. strlen() y codificación UTF-8
- 26. strlen más rápido?
- 27. Error de referencia de entidad no terminada
- 28. entender la función strlen en C
- 29. pruebas de cadena vacía/nulo en Django
- 30. PHP: reemplazar caracteres no válidos en cadena utf-8 en
pregúntese: ¿Cómo debería strlen() saber dónde termina su cadena, si no es terminada en nulo? – DevSolar
Técnicamente hablando, no existe una cadena C que no tenga terminación NUL, porque el Terminador NUL se define como parte de la cadena C :) – fredoverflow