问题
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?
回答1:
They are non-standard functions from Microsoft's C library. MS has since deprecated them in favor of renamed funcitons _strlwr()
and _strupr()
:
- strlwr() doc
- strupr() doc
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;
}
回答2:
These functions are not C standard functions. So it is implementation-defined whether they are supported or not.
回答3:
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