C 将包含大写字母的字符串转换为小写字母

C 将包含大写字母的字符串转换为小写字母,c,ascii,C,Ascii,我需要能够转换字符串中的大小写,以便“Hello”变成“Hello”。最后,我需要比较它们 我将如何转换: char *string = "HEllO"; 对于字符串“hello”?首先,您的字符串声明不正确,应该是: char *string = "Hello"; 现在,要转换为小写,请尝试以下操作: char *lowercase(const char *str) { int length = strlen(str); char *dup = malloc(length

我需要能够转换字符串中的大小写,以便
“Hello”
变成
“Hello”
。最后,我需要比较它们

我将如何转换:

char *string = "HEllO";

对于字符串
“hello”

首先,您的字符串声明不正确,应该是:

char *string = "Hello";
现在,要转换为小写,请尝试以下操作:

char *lowercase(const char *str)
{
    int length = strlen(str);
    char *dup = malloc(length + 1);
    strcpy(dup, str);

    for (int i = 0; i < length; i++)
    {
         dup[i] = tolower(dup[i]);
    }

    return dup; // remember to free when done!
}
char*小写(const char*str)
{
int长度=strlen(str);
char*dup=malloc(长度+1);
strcpy(dup,str);
for(int i=0;i
只需内联执行此操作

   char string[] = "Hello";
   char * ptr;

   for (ptr = string; *ptr != '\0'; ++ptr)
   {
       *ptr = tolower(*ptr);
   }

字符串文本是常量。您的代码在运行时会出现seg错误
char string[]=…
可以用。(编辑:kay比我先到了那里)至少向他解释一下为什么这不起作用,是的,行为是“未定义的”。他对字符串的定义有什么问题<代码>“你好”是一个有效的字符串。我想Richard是指你的问题……你到底想比较什么?您是否只需要知道输入字符串是否包含大写字母?那么您最终是否希望创建一个
compareTignoreCase
方法?您可以在比较时将字母转换为小写,而不保存整个字符串。