如何在 C 中将混合大小写字符串转换为小写字符串?
问问题
304316 次
6 回答
184
它在标准库中,这是我能看到的实现这种功能的最直接的方式。所以是的,只需遍历字符串并将每个字符转换为小写即可。
像这样微不足道的事情:
#include <ctype.h>
for(int i = 0; str[i]; i++){
str[i] = tolower(str[i]);
}
或者如果您更喜欢一种衬里,那么您可以使用 JF Sebastian 的这个:
for ( ; *p; ++p) *p = tolower(*p);
于 2010-04-18T09:44:18.330 回答
9
如果您将自己限制为 ASCII,则转换为小写相当于上升位 0x60:
for(char *p = pstr; *p; ++p)
*p = *p > 0x40 && *p < 0x5b ? *p | 0x60 : *p;
于 2010-04-18T10:36:15.730 回答
2
循环指针以获得更好的性能:
#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;
}
于 2020-04-30T08:01:09.057 回答
1
如果您需要小写函数中的 Unicode 支持,请参阅以下问题: Light C Unicode Library
于 2010-11-19T19:43:53.507 回答
1
如果我们要像使用一样草率tolower()
,请执行以下操作:
char blah[] = "blah blah Blah BLAH blAH\0";
int i = 0;
while( blah[i] |=' ', blah[++i] ) {}
但是,好吧,如果你给它一些符号/数字,它就会爆炸,而且总的来说它是邪恶的。不过,很好的面试问题。
于 2013-05-22T05:14:23.873 回答
0
您只是在处理 ASCII 字符串,并且没有语言环境问题吗?那么是的,这将是一个很好的方法。
于 2010-04-18T09:43:26.650 回答