如何在 C 中将字符串小写?

问题描述 投票:0回答:6

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

c string lowercase
6个回答
210
投票

它在标准库中,这是我能看到的实现此类功能的最直接的方法。所以是的,只需循环字符串并将每个字符转换为小写即可。

像这样的琐碎事情:

#include <ctype.h>

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

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

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

9
投票

如果您将自己限制为 ASCII,则转换为小写相当于上升位 0x60:

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

7
投票

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

#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;
}

1
投票

如果我们要像使用

tolower()
一样草率,请这样做:

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

但是,好吧,如果你给它一些符号/数字,它就会爆炸,总的来说它是邪恶的。不过,面试问题很好。


0
投票

您可以使用这个用户定义的函数: `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;

} `


-1
投票

我是 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;
}
© www.soinside.com 2019 - 2024. All rights reserved.