I was looking for this on internet and in every place with the functions of string.h these two are not mentioned.
Is because what? They aren't in every compiler?
They are non-standard functions from Microsoft's C library. MS has since deprecated them in favor of renamed funcitons _strlwr()
and _strupr()
:
Note that the MS docs claim they are POSIX functions, but as far as I can tell they never have been.
If you need to use them on a non-MS toolchain, they're easy enough to implement.
char* strlwr(char* s)
{
char* tmp = s;
for (;*tmp;++tmp) {
*tmp = tolower((unsigned char) *tmp);
}
return s;
}
These functions are not C standard functions. So it is implementation-defined whether they are supported or not.
These functions are not standard, and in fact their signatures are broken/non-usable. You cannot case-map a string in-place in general, because the length may change under case mapping.
来源:https://stackoverflow.com/questions/26327812/strupr-and-strlwr-in-string-h-part-are-of-the-ansi-standard