重新编码Toupper功能

时间:2014-11-01 14:39:24

标签: c

我被指派重新编写toUpper和toLower函数。我是否必须在if语句中编写所有26个字母,如:

if ( char == 'a' )
return 'A';

还是有另一种简单的方式?

1 个答案:

答案 0 :(得分:1)

Lower-case ASCII characters are sequential,所以如果字符的值在给定范围内,它就是一个简单的偏移字符的情况:

#include <stdio.h>

int to_upper(int value) { return (value >= 'a' && value <= 'z') ? value - ('a'-'A') : value; }

int main(int argc, char *argv[])
{
    printf("%c and %c\n", to_upper('B'), to_upper('f'));
    return 0;
}

在线试用此代码here