Estaba buscando esto en Internet y en todos los lugares con las funciones de string.h, estos dos no se mencionan.
¿Es porque qué? ¿No están en todos los compiladores?
ex serpiente
Estaba buscando esto en Internet y en todos los lugares con las funciones de string.h, estos dos no se mencionan.
¿Es porque qué? ¿No están en todos los compiladores?
miguel rebabas
Son funciones no estándar de la biblioteca C de Microsoft. Desde entonces, MS los ha desaprobado a favor de funciones renombradas _strlwr()
y _strupr()
:
Tenga en cuenta que los documentos de MS afirman que son funciones POSIX, pero por lo que puedo decir, nunca lo han sido.
Si necesita usarlos en una cadena de herramientas que no sea de MS, son bastante fáciles de implementar.
char* strlwr(char* s)
{
char* tmp = s;
for (;*tmp;++tmp) {
*tmp = tolower((unsigned char) *tmp);
}
return s;
}
También son compatibles con gcc, incluso si intenta forzar el cumplimiento de los estándares con algo como -std=c11
.
– AJM
5 mayo 2021 a las 17:34
Con respecto a que son funciones POSIX, hay una versión en línea de búsqueda de POSIX.1-2017 alojada en pubs.opengroup.org/onlinepubs/9699919799 – y definitivamente no se mencionan en él.
– AJM
5 mayo 2021 a las 19:58
Además, es posible que desee agregar #include <ctype.h>
en ese fragmento de código, ya que tolower
lo necesita y strlwr
necesario <string.h>
en lugar de.
– AJM
5 mayo 2021 a las 20:03
Estas funciones no son funciones estándar de C. Por lo tanto, está definido por la implementación si son compatibles o no.
Estas funciones no son estándar y, de hecho, sus firmas están rotas o no se pueden utilizar. En general, no puede mapear una cadena en el lugar porque la longitud puede cambiar en el mapeo de mayúsculas y minúsculas.
Relacionado (si no es un duplicado): stackoverflow.com/q/23618316/694576
– alk
12/10/2014 a las 17:22