我被指派重新编写toUpper和toLower函数。我是否必须在if语句中编写所有26个字母,如:
if ( char == 'a' )
return 'A';
还是有另一种简单的方式?
答案 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。