既然有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