在C中将最低效率转换为大写的最有效方法是什么?

时间:2012-01-31 00:13:07

标签: c

使用标准输入,用户输入1个字母。如果它是一个有效的小写字母,那么该程序将打印出大写版本。

5 个答案:

答案 0 :(得分:10)

您可以使用toupper。如果您需要先检查输入字符是否为小写,可以使用islower进行测试。

答案 1 :(得分:2)

这取决于编码;如果您只想处理ASCII,可以利用英文字母按顺序排列的事实。所以你的代码看起来像这样:

bool isLowerCase( char ch ) {
    return ch >= 'a' && ch <= 'z';
}

char toUpperCase( char ch ) {
    return (ch - 'a') + 'A';
}

如果您正在处理Unicode字符串,您应该考虑为此作业使用适当的库,例如ICU

答案 2 :(得分:0)

中输入的ASCII值中减去32

答案 3 :(得分:0)

if (c >= 'a' && c <= 'z') c &= 0xBF;

答案 4 :(得分:0)

如果你考虑像.ToUpper()这样的方法,你可以使用我写的这个方法:

char* ToUpper(char *lowerText)
{
    int i;

    const int length = strlen(lowerText);

    char *ptrUpperCase = malloc(length + 1);

    for(i = 0; i < length; i++)
    {
            if((lowerText[i] >= 0x61) && (lowerText[i] <= 0x7A))
                    *(ptrUpperCase + i) = lowerText[i] - 0x20;
            else
                    *(ptrUpperCase + i) = lowerText[i];
    }

    *(ptrUpperCase + length) = 0x00;

    return ptrUpperCase;
}

并且用于调用它:

ToUpper("Apple2014");

它会返回一个指针,参考“APPLE2014”。

我希望这会有用;