string.h中的strupr()和strlwr()符合ANSI标准?

时间:2014-10-12 17:16:11

标签: c string.h

我在互联网上寻找这个,并且在每个具有string.h功能的地方都没有提到这两个。

是因为什么?它们不在每个编译器中吗?

3 个答案:

答案 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)

这些功能不是标准功能,实际上它们的签名是破坏/不可用的。一般情况下,您不能就地对字符串进行大小写映射,因为长度可能会在大小写映射下发生变化。