繁体   English   中英

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

[英]convert char array elemnts to upper or lower case

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

  1. 全部转换为大写=已完成
  2. 全部转换为小写=完成
  3. 如果每个字符从上到下转换,反之亦然。 (问题)

我不知道我的逻辑是错误的还是简单的解决方法。 任何建议表示赞赏。

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

你需要改变

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

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

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

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

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

  • 您应该使用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;
}

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

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

检查大写。 并使用:

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

检查小写。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM