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]) {}
但是,如果你给它一些符号/数字,它就会爆炸,一般来说它是邪恶的。 好面试的问题,虽然。