如何在C中小写字符串?

时间:2010-04-18 09:36:06

标签: c string lowercase

如何在C?中将混合大小写字符串转换为小写字符串?

6 个答案:

答案 0 :(得分:131)

它位于标准库中,这是我可以看到实现这种功能的最直接的方式。所以是的,只需遍历字符串并将每个字符转换为小写。

像这样微不足道的事情:

#include <ctype.h>

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

或者如果您更喜欢一个衬垫,那么您可以使用J.F.Sebastian的这个衬垫:

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

答案 1 :(得分:6)

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

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

(当然是拉丁代码页)

答案 2 :(得分:1)

您是刚刚处理ASCII字符串,并且没有区域设置问题?那么是的,这将是一个很好的方法。

答案 3 :(得分:1)

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

答案 4 :(得分:1)

如果我们要像使用tolower()一样草率,请执行此操作:

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

但是,如果你喂它一些符号/数字,它有点爆炸,一般来说它是邪恶的。不过,这是一个很好的面试问题。

答案 5 :(得分:1)

环绕指针以获得更好的性能:

#include <ctype.h>

char* toLower(char* s) {
  for(char *p=s; *p; p++) *p=tolower(*p);
  return s;
}
char* toUpper(char* s) {
  for(char *p=s; *p; p++) *p=toupper(*p);
  return s;
}