既然有tolower()函数,那一定就有toupper(),当然实现它也是非常简单的事。
头文件:#include <ctype.h>
函数定义:int toupper(int c);
函数说明:若参数 c 为小写字母则将其对应的大写字母返回,其他字符的话返回原字符。
返回值:返回转换后的小写字母, 若不须转换则将参数c 值返回。
测试代码:
#include<stdio.h> #include<string.h> int mytoupper(int c){ if('a'<=c && 'z'>=c) return c-32; return c; } int mytoupper2(int c){ if('a'<=c && 'z'>=c) return c-('z'-'a'); return c; } int main(){ char s1[] = "3489 #$!@$# ASDFDF adfdf +-*/"; int i=0; for(;i<strlen(s1);i++){ //s1[i] = toupper(s1[i]); //s1[i] = mytoupper(s1[i]); s1[i] = mytoupper2(s1[i]); } printf("s1=%s",s1); return 0; }
但是看到ctype.c里面的源码如下写:
int toupper(int c) { if (_pctype[c] & _LOWER) { return c - ('a' - 'A'); } else { return c; } }
想想这样做的好处:
参考:
http://www.jbox.dk/sanos/source/include/ctype.h.html#:102
http://www.jbox.dk/sanos/source/lib/ctype.c.html