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

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

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

它们是Microsoft C库中的非标准函数。 MS已经弃用它们而转而使用重命名的_strlwr()_strupr()

  • strlwr() doc
  • strupr() doc

请注意,MS文档声称它们是POSIX函数,但据我所知,它们从未出现过。

如果您需要在非MS工具链上使用它们,它们很容易实现。

 char* strlwr(char* s) { char* tmp = s; for (;*tmp;++tmp) { *tmp = tolower((unsigned char) *tmp); } return s; } 

这些function不是C标准function。 因此,无论是否支持,都是实现定义的。

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