有网友提出怎么转换英文字母的大小写,这个也是编程中非常常见的需求,这个问题其实很简单,很多有点基础的朋友都会解决,下面我给出三种常用的方法给初学者参考。
方法一
使用C语言标准函数完成,代码如下:
char *tolow1(char *str)
{
int i, n = strlen(str);
for (i=0; i<n; i++) { str[i] = tolower(str[i]); }
return str; }
方法二
使用ASCII码值之差,所有的小写字母比大写字母大32,代码如下:
char *tolow2(char *str) { int i, n = strlen(str);
for (i=0; i<n; i++) { if (str[i] >= 'A' && str[i] <= 'Z') str[i] += 32; }
return str; }
方法三
使用ASCII码值的特征,大写字母与小写字母相差的就是这一位,而且不像方法二那样去做判断,效率明显比上面这个高,小写变大写也可以类似用&实现。代码如下:
char *tolow3(char *str) { int i, n = strlen(str);
for (i=0; i<n; i++) { str[i] |= 0x20; }
return str; }
下面我们分别调用这三个函数:
int main(int argc, char *argv[]) { char str1[] = "BeJiNG"; char str2[] = "TiAnMen"; char str3[] = "WuXiNgHqI";
printf("old: %s, %s, %s\n", str1, str2, str3); printf("new: %s, %s, %s\n", tolow1(str1), tolow2(str2), tolow3(str3));
return 0; }
三种常见的方法运行后如下:
三种方法都达到了大小写转换的目的。