C言語のきほん「文字列の基本(2)」

スポンサーリンク
プログラミング C言語

今回は、「文字列内の英字を大文字・小文字で表示」するプログラムである。

なお、本プログラムは、Windows 11 Home(23H2)上で、 Visual Studio Code(1.88.1)を使用して作成し、gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0 でコンパイルしている。

文字列内の英字を大文字・小文字で表示するプログラム

//文字列内の英字を大文字・小文字で表示するプログラム
#include <ctype.h>
#include <stdio.h>

//文字列s内の英字を大文字で表示
void put_upper(const char s[])
{
    int i = 0;
    while(s[i])
        putchar(toupper(s[i++]));
}

//文字列s内の英字を小文字で表示
void put_lower(const char s[])
{
    int i = 0;
    while(s[i])
        putchar(tolower(s[i++]));
}

int main(void)
{
    char str[128];

    printf("文字列を入力してください:");
    scanf("%s",str);

    printf("大文字:");  put_upper(str); putchar('\n');
    printf("小文字:");  put_lower(str); putchar('\n');

    return 0;

}

実行結果

文字列を入力してください:LeSSon1
大文字:LESSON1
小文字:lesson1

英字を大文字あるいは小文字に変換するために利用しているのが、<ctype.h>で提供されるtoupper関数とtolower関数である。

toupper関数
引数に受け取った文字が小文字であれば、大文字に変換した文字を返却して、そうでなければ、受け取った文字をそのまま返却する。

tolower関数
引数に受け取った文字が大文字であれば、小文字に変換した文字を返却して、そうでなければ、受け取った文字をそのまま返却する。

これらの関数は、英字以外の文字は変換しない仕様となっている。変換対象は半角文字で、漢字など全角文字などには対応していない。

参考)新・解きながら学ぶC言語 第2版 柴田望洋 (監修・著)、 由梨かおる(著)SBクリエイティブ

コメント

タイトルとURLをコピーしました