将char数组元素转换为大写或小写

时间:2015-09-25 06:03:12

标签: c arrays char

对于我的家庭作业,我们被要求从用户处获取一个字符串,并且:

  1. 将其全部转换为大写=已完成
  2. 将其全部转换为小写=已完成
  3. 转换每个字符,如果它是从上到下,反之亦然。 (问题)
  4. 我不知道我的逻辑是否错误或是否是一个简单的修复。任何建议都表示赞赏。

    #include <stdio.h>
    
    
    int main()
    {
    int i;
    char sentense [30];
    printf("Please enter a sentence\n");
    fgets(sentense, 30, stdin);
    
    for(i=0; sentense[i] != '\0'; i++)
    {
        putchar(toupper(sentense[i]));
    }
    
    for(i=0; sentense[i] != '\0'; i++)
    {
        putchar(tolower(sentense[i]));
    }
    
    for(i=0; sentense[i] != '\0'; i++)
    {
        if(sentense[i] >='65' && sentense[i] <='90')
        {
            putchar(tolower(sentense[i]));
        }
    
    
        else if(sentense[i] >= '97' && sentense[i] <='122')
        {
            putchar(tolower(sentense[i]));
        }
        else
        {
    
        }
    }
    
    
    
    return 0;
    }
    

3 个答案:

答案 0 :(得分:4)

您需要更改

if(sentense[i] >='65' && sentense[i] <='90')

if(sentense[i] >= 65 && sentense[i] <= 90)

和其他情况,因为我们想在这里比较整数值。

启用编译器警告,编译器应警告您错误。

或者,您也可以使用isupper()/islower()库函数。

答案 1 :(得分:4)

  • 您应该使用isupperislower来阻止代码依赖于字符代码。
  • 您应该使用toupper代替tolower将字母转换为大写字母。
  • 您可能需要打印英文字母以外的字符。

固定代码:

#include <stdio.h>
#include <ctype.h>


int main()
{
    int i;
    char sentense [30];
    printf("Please enter a sentence\n");
    fgets(sentense, 30, stdin);

    for(i=0; sentense[i] != '\0'; i++)
    {
        putchar(toupper(sentense[i]));
    }

    for(i=0; sentense[i] != '\0'; i++)
    {
        putchar(tolower(sentense[i]));
    }

    for(i=0; sentense[i] != '\0'; i++)
    {
        if(isupper(sentense[i]))
        {
            putchar(tolower(sentense[i]));
        }


        else if(islower(sentense[i]))
        {
            putchar(toupper(sentense[i]));
        }
        else
        {
            putchar(sentense[i]);
        }
    }
    return 0;
}

答案 2 :(得分:1)

易于理解,您应该直接比较。让我们使用:

if(sentense[i] >='A' && sentense[i] <='Z') 

检查案例。并使用:

if(sentense[i] >='a' && sentense[i] <='z') 

检查低位。