【C言語入門】
大文字⇔小文字変換
isupperとtolower

■標準ヘッダを使った大文字小文字変換

#include <ctype.h>
#include <stdio.h>
void    大文字小文字変換(char *line){
    for(char *cp = line;*cp != '\0';cp++){
        if(!isalpha(*cp)) {
            continue ;
        }
        if(isupper(*cp)) {   
            *cp = tolower(*cp);
            continue ;
        }
        if(islower(*cp)) {
            *cp = toupper(*cp);
            continue ;
        }    
    }
}
int main(void){
    char    buf[BUFSIZ] ;
    printf("大文字と小文字の英数字を入れてね");
    fgets(buf,BUFSIZ,stdin);
    printf("↑:%s",buf);
    大文字小文字変換(buf);
    printf("↓:%s",buf);    
}

標準ヘッダctype.hで定義されている
標準関数を使うと
コードが読みやすくなります。(推奨)


■文字定数を使った大文字小文字変換

#include <stdio.h>
void    大文字小文字変換(char *line){
    for(char *cp = line;*cp != '\0';cp++){
        if(('A' <= *cp) && (*cp <= 'Z')) {   
            *cp = *cp - 'A'+'a';
            continue ;
        }
        if(('a' <= *cp) && (*cp <= 'z')) {
            *cp = *cp - 'a' + 'A';
            continue ;
        }   
    }
}
int main(void){
    char    buf[BUFSIZ] ;
    printf("大文字と小文字の英数字を入れてね");
    fgets(buf,BUFSIZ,stdin);
    printf("↑:%s",buf);
    大文字小文字変換(buf);
    printf("↓:%s",buf);    
}

■16進数字を使った大文字小文字変換

#include <stdio.h>
void    大文字小文字変換(char *line){
    for(char *cp = line;*cp != '\0';cp++){
        if((0x41 <= *cp) && (*cp <= 0x5A)) {   
            *cp = *cp - 0x41 + 0x61;
            continue;
        }
        if((0x61 <= *cp) && (*cp <= 0x7a)) {
            *cp = *cp - 0x61 + 0x41;
            continue;
        }   
    }
}
int main(void){
    char    buf[BUFSIZ] ;
    printf("大文字と小文字の英数字を入れてね");
    fgets(buf,BUFSIZ,stdin);
    printf("↑:%s",buf);
    大文字小文字変換(buf);
    printf("↓:%s",buf);    
}

16進定数の意味をアスキーコード表で調べる必要があり、
ちょっと見ただけでは何をしてるのか
分からなくなります。(非推奨)