0Pricing
C Academy · レッスン

ctype ライブラリ

isdigit、isalpha、toupper です。

「ctype ライブラリ」はCoddyKit上の無料C Academyレッスンです。 これはレッスン2/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはC Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 C Academyコースには全4レッスンが含まれています。

ctype.h とは

<ctype.h> ヘッダーには、文字を分類および変換するための関数が用意されています。

ASCII の範囲を暗記したり、比較を手動で記述したりする必要がなくなります。

#include <stdio.h>
#include <ctype.h>

int main(void) {
    printf("Is 'A' alpha? %d\n", isalpha('A'));
    return 0;
}

isdigit

isdigit(c) は、c が数字文字 '0'~'9' の場合は 0 以外の値を返し、それ以外の場合は 0 を返します。

#include <stdio.h>
#include <ctype.h>

int main(void) {
    printf("isdigit('7') = %d\n", isdigit('7'));
    printf("isdigit('x') = %d\n", isdigit('x'));
    return 0;
}

isalpha

isalpha(c) は、c が大文字または小文字のアルファベットの場合に 0 以外の値を返します。

数字と記号の場合は 0 を返します。

#include <stdio.h>
#include <ctype.h>

int main(void) {
    printf("isalpha('G') = %d\n", isalpha('G'));
    printf("isalpha('3') = %d\n", isalpha('3'));
    return 0;
}

isalnum と isspace

isalnum(c) は、文字または数字の場合に真になります。isspace(c) は、スペース、タブ、改行などの空白文字の場合に真になります。

#include <stdio.h>
#include <ctype.h>

int main(void) {
    printf("isalnum('9') = %d\n", isalnum('9'));
    printf("isspace(' ') = %d\n", isspace(' '));
    printf("isspace('a') = %d\n", isspace('a'));
    return 0;
}

isupper と islower

isupper(c) は大文字かどうかを、islower(c) は小文字かどうかを判定します。

大文字・小文字を変換するかどうかを決める前に使うと便利です。

#include <stdio.h>
#include <ctype.h>

int main(void) {
    printf("isupper('A') = %d\n", isupper('A'));
    printf("islower('A') = %d\n", islower('A'));
    return 0;
}

ispunct

ispunct(c) は、!、?、, のような、文字、数字、スペースではない印字可能な句読点文字に対して 0 以外の値を返します。

#include <stdio.h>
#include <ctype.h>

int main(void) {
    printf("ispunct('!') = %d\n", ispunct('!'));
    printf("ispunct('a') = %d\n", ispunct('a'));
    return 0;
}

toupper

toupper(c) は、文字を大文字に変換した結果を返します。c が小文字でない場合は、変更せずに c を返します。

#include <stdio.h>
#include <ctype.h>

int main(void) {
    printf("%c\n", toupper('h'));
    printf("%c\n", toupper('5'));
    return 0;
}

tolower

tolower(c) は、大文字を小文字に変換した結果を返します。大文字でない場合は、文字を変更せずに返します。

#include <stdio.h>
#include <ctype.h>

int main(void) {
    printf("%c\n", tolower('H'));
    printf("%c\n", tolower('z'));
    return 0;
}

文字列を分類する

文字列をループし、ctype 関数を使って数字と文字の個数を数えます。

#include <stdio.h>
#include <ctype.h>

int main(void) {
    char *s = "abc123";
    int letters = 0, digits = 0;
    for (int i = 0; s[i]; i++) {
        if (isalpha(s[i])) letters++;
        if (isdigit(s[i])) digits++;
    }
    printf("letters=%d digits=%d\n", letters, digits);
    return 0;
}

文字列全体を大文字にする

toupper とループを組み合わせると、文字列全体を文字ごとに大文字へ変換できます。

#include <stdio.h>
#include <ctype.h>

int main(void) {
    char s[] = "Hello";
    for (int i = 0; s[i]; i++) {
        s[i] = toupper(s[i]);
    }
    printf("%s\n", s);
    return 0;
}

負の char ではなく int を渡す

ctype 関数は、unsigned char で表現できる値、または EOF である必要がある int を受け取ります。

負の char を直接渡すと未定義動作になります。判断に迷う場合は、unsigned char にキャストしてください。

#include <stdio.h>
#include <ctype.h>

int main(void) {
    char c = 'Q';
    int result = isalpha((unsigned char)c);
    printf("safe isalpha = %d\n", result);
    return 0;
}

確認問題

ctype ライブラリについての知識を確認しましょう。

まとめ

<ctype.h> ライブラリを使うと、次のことができます。

  • isdigit、isalpha、isalnum、isspace、ispunct、isupper、islower で文字を分類する。
  • toupper と tolower で文字を変換する。
  • 未定義動作を避けるため、常に unsigned char にキャストした値を渡す。

よくある質問

「ctype ライブラリ」レッスンは無料ですか?

はい。「ctype ライブラリ」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、C Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 C Academyコースには全4レッスンが含まれています。

「ctype ライブラリ」で何を学びますか?

isdigit、isalpha、toupper です。 ブラウザで直接実行するハンズオンコードでC Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。

C Academyを始めるのに経験は必要ですか?

事前経験は必要ありません。CoddyKitのC Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン2/4です。

「ctype ライブラリ」レッスンにはどのくらい時間がかかりますか?

ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。

このC Academyレッスンでコードを書いて実行できますか?

はい。すべてのC Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。

このコースのすべてのレッスン

  1. 整数としての文字
  2. ctype ライブラリ
  3. 文字の読み取り
  4. 文字ユーティリティの作成
← C Academyに戻る