我在互联网上寻找这个,并且在每个具有string.h功能的地方都没有提到这两个。
是因为什么?它们不在每个编译器中吗?
答案 0 :(得分:10)
它们是Microsoft C库中的非标准函数。 MS已将其弃用,转而使用重命名的功能_strlwr()
和_strupr()
:
请注意,MS文档声称它们是POSIX函数,但据我所知,它们从未出现过。
如果您需要在非MS工具链上使用它们,它们很容易实现。
char* strlwr(char* s)
{
char* tmp = s;
for (;*tmp;++tmp) {
*tmp = tolower((unsigned char) *tmp);
}
return s;
}
答案 1 :(得分:4)
这些功能不是C标准功能。所以它是实现定义的是否支持它们。
答案 2 :(得分:1)
这些功能不是标准功能,实际上它们的签名是破坏/不可用的。一般情况下,您不能就地对字符串进行大小写映射,因为长度可能会在大小写映射下发生变化。