C標準ライブラリ -<ctype.h>
概要
C標準ライブラリのctype.hヘッダーファイルは、文字のテストと変換に使用できる関数を提供します。これらの関数は主に、文字の種類(アルファベット、数字、空白文字など)をチェックし、文字の大文字と小文字の変換を行います。
<ctype.h>文字の分類と変換操作を処理するための便利な関数群を提供し、C標準ライブラリにおける文字操作の重要なツールです。
以下は、提供された関数の<ctype.h>使用方法を示す簡単な例です:
例
#include <stdio.h>
#include <ctype.h>
int main() {
char ch;
// サンプル文字
char chars[] = "a1 B? \n";
// 各文字のタイプをチェック
for (int i = 0; chars[i] != '\0'; i++) {
ch = chars[i];
printf("Character: '%c'\n", ch);
if (isalpha(ch)) {
printf(" - isalpha: Yes\n");
} else {
printf(" - isalpha: No\n");
}
if (isdigit(ch)) {
printf(" - isdigit: Yes\n");
} else {
printf(" - isdigit: No\n");
}
if (isspace(ch)) {
printf(" - isspace: Yes\n");
} else {
printf(" - isspace: No\n");
}
if (isprint(ch)) {
printf(" - isprint: Yes\n");
} else {
printf(" - isprint: No\n");
}
if (ispunct(ch)) {
printf(" - ispunct: Yes\n");
} else {
printf(" - ispunct: No\n");
}
}
// 文字の大文字小文字変換の例
char lower = 'a';
char upper = 'A';
printf("tolower('%c') = '%c'\n", upper, tolower(upper));
printf("toupper('%c') = '%c'\n", lower, toupper(lower));
return 0;
}
#include <ctype.h>
int main() {
char ch;
// サンプル文字
char chars[] = "a1 B? \n";
// 各文字のタイプをチェック
for (int i = 0; chars[i] != '\0'; i++) {
ch = chars[i];
printf("Character: '%c'\n", ch);
if (isalpha(ch)) {
printf(" - isalpha: Yes\n");
} else {
printf(" - isalpha: No\n");
}
if (isdigit(ch)) {
printf(" - isdigit: Yes\n");
} else {
printf(" - isdigit: No\n");
}
if (isspace(ch)) {
printf(" - isspace: Yes\n");
} else {
printf(" - isspace: No\n");
}
if (isprint(ch)) {
printf(" - isprint: Yes\n");
} else {
printf(" - isprint: No\n");
}
if (ispunct(ch)) {
printf(" - ispunct: Yes\n");
} else {
printf(" - ispunct: No\n");
}
}
// 文字の大文字小文字変換の例
char lower = 'a';
char upper = 'A';
printf("tolower('%c') = '%c'\n", upper, tolower(upper));
printf("toupper('%c') = '%c'\n", lower, toupper(lower));
return 0;
}
出力結果:
Character: 'a'
- isalpha: Yes
- isdigit: No
- isspace: No
- isprint: Yes
- ispunct: No
Character: '1'
- isalpha: No
- isdigit: Yes
- isspace: No
- isprint: Yes
- ispunct: No
Character: ' '
- isalpha: No
- isdigit: No
- isspace: Yes
- isprint: Yes
- ispunct: No
Character: 'B'
- isalpha: Yes
- isdigit: No
- isspace: No
- isprint: Yes
- ispunct: No
Character: '?'
- isalpha: No
- isdigit: No
- isspace: No
- isprint: Yes
- ispunct: Yes
Character: '
'
- isalpha: No
- isdigit: No
- isspace: Yes
- isprint: No
- ispunct: No
tolower('A') = 'a'
toupper('a') = 'A'
ライブラリ関数
以下に、ヘッダーファイル ctype.h で定義されている関数を示します。
これらの関数は、文字が特定のタイプに属するかどうかをテストするために使用され、引数として値を受け取ります。intその値は EOF または unsigned char として表現できるものでなければなりません。
パラメータ c が記述された条件を満たす場合、これらの関数はゼロ以外(true)を返します。パラメータ c が記述された条件を満たさない場合、これらの関数はゼロを返します。
| 番号 | 関数 & 説明 |
|---|---|
| 1 | int isalnum(int c) この関数は、渡された文字が英数字であるかどうかをチェックします。 |
| 2 | int isalpha(int c) この関数は、渡された文字がアルファベットであるかどうかをチェックします。 |
| 3 | int iscntrl(int c) この関数は、渡された文字が制御文字であるかどうかをチェックします。 |
| 4 | int isdigit(int c) この関数は、渡された文字が10進数字であるかどうかをチェックします。 |
| 5 | int isgraph(int c) この関数は、渡された文字がグラフィック表現を持つかどうかをチェックします。 |
| 6 | int islower(int c) この関数は、渡された文字が小文字であるかどうかをチェックします。 |
| 7 | int isprint(int c) この関数は、渡された文字が印字可能であるかどうかをチェックします。 |
| 8 | int ispunct(int c) この関数は、渡された文字が句読点文字であるかどうかをチェックします。 |
| 9 | int isspace(int c) この関数は、渡された文字が空白文字であるかどうかをチェックします。 |
| 10 | int isupper(int c) この関数は、渡された文字が大文字であるかどうかをチェックします。 |
| 11 | int isxdigit(int c) この関数は、渡された文字が16進数字であるかどうかをチェックします。 |
標準ライブラリには、int を受け取って int を返す2つの変換関数も含まれています。
| 番号 | 関数 & 説明 |
|---|---|
| 1 | int tolower(int c) この関数は大文字を小文字に変換します。 |
| 2 | int toupper(int c) この関数は小文字を大文字に変換します。 |
文字クラス
| 番号 | 文字クラス & 説明 |
|---|---|
| 1 | 数字 数字の完全な集合 { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 } |
| 2 | 16進数字 集合 { 0 1 2 3 4 5 6 7 8 9 A B C D E F a b c d e f } |
| 3 | 小文字 集合 { a b c d e f g h i j k l m n o p q r s t u v w x y z } |
| 4 | 大文字 集合 {A B C D E F G H I J K L M N O P Q R S T U V W X Y Z } |
| 5 | アルファベット 小文字と大文字の集合 |
| 6 | 英数字文字 数字、小文字、大文字の集合 |
| 7 | 句読点文字 集合 ! " # $ % & ' ( ) * + , - . / : ; < = > ? @ [ \ ] ^ _ ` { | } ~ |
| 8 | グラフィック文字 英数字文字と句読点文字の集合 |
| 9 | 空白文字 タブ文字、改行文字、垂直タブ文字、フォームフィード、復帰文字、スペース文字の集合。 |
| 10 | 印字可能文字 英数字文字、句読点文字、スペース文字の集合。 |
| 11 | 制御文字 ASCII エンコーディングでは、これらの文字の8進コードは 000 から 037、および 177(DEL)です。 |
| 12 | 空白文字 スペース文字とタブ文字を含みます。 |
| 13 | アルファベット文字 小文字と大文字の集合。 |