如何在 C 中将大小写混合的字符串转换为小写字符串?
它在标准库中,这是我能看到的实现此类功能的最直接的方法。所以是的,只需循环字符串并将每个字符转换为小写即可。
像这样的琐碎事情:
#include <ctype.h>
for(int i = 0; str[i]; i++){
str[i] = tolower(str[i]);
}
或者如果您更喜欢一种衬垫,那么您可以使用 J.F. Sebastian 的这款:
for ( ; *p; ++p) *p = tolower(*p);
如果您将自己限制为 ASCII,则转换为小写相当于上升位 0x60:
for(char *p = pstr; *p; ++p)
*p = *p > 0x40 && *p < 0x5b ? *p | 0x60 : *p;
循环指针以获得更好的性能:
#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;
}
如果我们要像使用
tolower()
一样草率,请这样做:
char blah[] = "blah blah Blah BLAH blAH\0";
int i = 0;
while( blah[i] |=' ', blah[++i] ) {}
但是,好吧,如果你给它一些符号/数字,它就会爆炸,总的来说它是邪恶的。不过,面试问题很好。
您可以使用这个用户定义的函数: `char *ToLower(char *text){
int stringlength=strlen(text);
char *lower=(char*)malloc(sizeof(char)*stringlength);
int i=0;
while(i<stringlength){
//checking if the character is an uppercase
if((text[i]-'A')<=25){
lower[i]=text[i]+32;
}
//if the character is lowercase
else{
lower[i]=text[i];
}
i++;
}
return lower;
} `
我是 C 新手,一直在努力将字符串从大写转换为小写。我错误地更改了字符串 'A' + 32 = 'a'。而且我无法解决这个问题。
我使用了 char 类型,最后我能够将其转换为 string 类型。您可以咨询:
#include <ctype.h>
#include <stdio.h>
#include <string.h>
string convert_lower(string str)
{
int length = strlen(str);
char c[length + 1];
for (int i = 0; i < length; i++)
{
if (str[i] <= 'Z' || str[i] >= 'A')
{
c[i] = tolower((char)str[i]);
}
}
c[length] = '\0';
string text = c;
return text;
}