c – 将混合大小写string转换为全部小写字母

在C中将混合大小写string转换为小写字母的最好/最干净的方法是什么?

它在标准库中,这是我可以看到实现这种function的最直接的方式。 所以是的,只是循环通过string,并将每个字符转换为小写。

像这样的小事:

for(int i = 0; str[i]; i++){ str[i] = tolower(str[i]); } 

或者如果你喜欢一个衬垫,那么你可以使用JF Sebastian的这个:

 for ( ; *p; ++p) *p = tolower(*p); 

转换成小写就相当于上升位0x60:

 for(char *p = pstr;*p;++p) *p=*p>0x40&&*p<0x5b?*p|0x60:*p; 

(当然拉丁代码页)

你只是处理ASCIIstring,并没有语言环境问题? 那么是的,这将是一个很好的方法来做到这一点。

如果您需要小写函数的Unicode支持,请参阅以下问题: Light C Unicode Library

如果我们要像使用tolower()一样马虎,那就这样做:

 char blah[] = "blah blah Blah BLAH blAH\0"; int i=0; while(blah[i]|=' ', blah[++i]) {} 

但是,如果你给它一些符号/数字,它就会爆炸,一般来说它是邪恶的。 好面试的问题,虽然。