¿Cuál es la mejor/más limpia manera de convertir una cadena de mayúsculas y minúsculas en minúscula en C?c - convierte una secuencia de mayúsculas y minúsculas en todas las minúsculas
Respuesta
Está en la biblioteca estándar, y esa es la manera más directa que puedo ver para implementar dicha función. Así que sí, simplemente recorra la cadena y convierta cada carácter a minúscula.
algo trivial como esto:
for(int i = 0; str[i]; i++){
str[i] = tolower(str[i]);
}
o si lo prefiere trazadores de líneas uno, entonces se puede utilizar éste por JF Sebastian:
for (; *p; ++p) *p = tolower(*p);
'for (; * p; ++ p) * p = tolower (* p);' parece más idiomático – jfs
@ J.F. ahí tienes. Depende de si quieren que el código parezca aterrador o agradable :) (un trazador de línea muy legible, pero parece aterrador) – Earlz
esto me da un segfault si str es un 'char *', pero no si str es un conjunto de caracteres. ¿Tienes alguna explicación para eso? –
¿Está tratando con cadenas ASCII y no tiene problemas de configuración regional? Entonces sí, esa sería una buena manera de hacerlo.
¿Qué sucede si se invoca tolower() en un carácter que no es ASCII aZ? me gusta '!' o '#'. Lo probé en '#' y pareció funcionar bien. ¿Es esto generalmente cierto para todos los caracteres ascii que no son letras a-z? – sepiroth
@hatorade: 'tolower()' deja el argumento sin cambios si no está en el rango 'A' .. 'Z'. – jfs
! y # son ambos caracteres ascii. Mark se estaba refiriendo a otras codificaciones como UTF8, donde no puede suponer que hay un byte por carácter (como lo hace esta solución) – hdgarrood
para convertir a minúsculas es equivalente a subir poco 0x60:
for(char *p = pstr;*p;++p) *p=*p>0x40&&*p<0x5b?*p|0x60:*p;
(página de códigos para el latino, por supuesto)
Para hacerlo un poco más legible, podría hacer 'for (char * p = pstr; * p; ++ p) * p = * p> = 'A' && * p <= 'Z'? * P | 0x60: * p; ' –
Esta versión es más lenta que' tolower() 'de glibc. 55.2 vs. 44.15 en mi máquina. – jfs
no puedo imaginarme lo siguiente: tolower() trata con caracteres; solo si es macro –
Si necesita soporte Unicode en la función minúsculas ver esta pregunta: Light C Unicode Library
Si vamos a ser tan descuidado como para utilizar tolower()
, hacer esto:
char blah[] = "blah blah Blah BLAH blAH\0"; int i=0; while(blah[i]|=' ', blah[++i]) {}
Pero, bueno , explota un poco si le das algunos símbolos/números, y en general es malvado. Buena pregunta de entrevista, sin embargo.
Sí, esto doblará/girará/mutilará una variedad de símbolos (en ASCII, cualquier símbolo, carácter de control o numeral con el bit 5 claro se convertirá en el mismo código de carácter con el bit 5 establecido, etc.) así que, realmente, en serio, no lo haga t usarlo. –
Esta publicación se trata en [meta] (http://meta.stackoverflow.com/questions/270402/is-ghetto-an-offensive-word). –
- 1. css mayúsculas y minúsculas
- 2. minúsculas y mayúsculas nombre de archivo
- 3. Explotar una cadena en mayúsculas y minúsculas?
- 4. Conversión de mayúsculas y minúsculas en JavaScript
- 5. VB6 Editor cambia de mayúsculas y minúsculas.
- 6. .NET HttpSessionState mayúsculas y minúsculas
- 7. Ignorar mayúsculas y minúsculas en Python Strings
- 8. MySQL mayúsculas y minúsculas consulta
- 9. Una lista insensible a mayúsculas y minúsculas
- 10. ordenación de lista insensible a mayúsculas y minúsculas, sin minúsculas?
- 11. consulta de mayúsculas y minúsculas en mongodb
- 12. Cambio de mayúsculas y minúsculas en Vim
- 13. ¿Por qué las etiquetas son todas minúsculas?
- 14. insensibilidad a mayúsculas/minúsculas
- 15. ¿Cómo puedo convertir todas las columnas en mi base de datos a mayúsculas y minúsculas
- 16. ¿Cambia la intercalación de SQL Server a mayúsculas o minúsculas de mayúsculas y minúsculas?
- 17. OData y distinción entre mayúsculas y minúsculas
- 18. Convertir a mayúsculas y minúsculas en Java
- 19. ignorar mayúsculas y minúsculas en regex.replace?
- 20. ¿SHA-256 es insensible a las mayúsculas y minúsculas?
- 21. interruptor de mayúsculas y minúsculas, php
- 22. ¿F es sensible a mayúsculas y minúsculas?
- 23. cómo usar ruby / rails para convertir todas las mayúsculas a letras mayúsculas adecuadas, descansar en minúsculas?
- 24. escritura entre mayúsculas y minúsculas versión
- 25. Deserialización de propiedades insensible a las mayúsculas y minúsculas Json.NET
- 26. Comparación de cadenas insensibles a mayúsculas y minúsculas C++
- 27. Lucene, búsqueda sensible a mayúsculas y minúsculas
- 28. MAYÚSCULAS, minúsculas, capitalizar una propiedad Ant
- 29. NSMutableArray clasificación - entre mayúsculas y minúsculas
- 30. ¿Puede fogbugz seguir las dependencias de mayúsculas y minúsculas?
¿Está tratando con ASCII solo con letras a-z? –
ascii. ¿Cómo tomaría eso en cuenta? ¿seguiría funcionando el siguiente ejemplo? ¿Qué pasa si mi char es un '#' y se invoca a tolower()? – sepiroth
Eso funcionará. Estaba pensando más si tu cadena contiene cosas como é o Ü. –