3級の出題範囲にある ctype.h の全関数を整理する。
関数名の語源を覚えると判断しやすい。
#include <ctype.h> が必要。真なら 0 以外、偽なら 0 を返す。
| 関数名 | 語源 | 判定内容 | 真になる例 |
|---|---|---|---|
isalpha(c) | alpha(アルファベット) | 英字(a〜z、A〜Z) | 'A', 'z' |
isdigit(c) | digit(数字) | 数字(0〜9) | '0', '9' |
isalnum(c) | alpha + numeric | 英字または数字 | 'A', '3' |
islower(c) | lower(小文字) | 小文字英字(a〜z) | 'a', 'z' |
isupper(c) | upper(大文字) | 大文字英字(A〜Z) | 'A', 'Z' |
isspace(c) | space(空白) | 空白文字(スペース・タブ・改行など) | ' ', '\t', '\n' |
ispunct(c) | punct(句読点・記号) | 記号(英数字・空白以外の表示文字) | '!', '?', '#', '.' |
isgraph(c) | graph(グラフィック) | 表示可能文字(空白は含まない) | 'A', '!', '5' |
isprint(c) | print(印刷可能) | 表示可能文字(空白も含む) | ' ', 'A', '9', '*' |
iscntrl(c) | cntrl(制御文字) | 制御文字 | '\n', '\t', '\0' |
isxdigit(c) | xdigit(16進数字) | 16進数で使える文字 | '0'〜'9', 'a'〜'f', 'A'〜'F' |
isgraph:スペースは含まない(空白は非表示扱い)isprint:スペースは含む(空白も印刷可能)isspace('\t') → 真(タブも空白文字に含まれる)ispunct('.') → 真(ピリオドは記号)
| 関数名 | 変換内容 | 例 |
|---|---|---|
tolower(c) | 小文字に変換(to lower-case) | 'A' → 'a'('a' はそのまま) |
toupper(c) | 大文字に変換(to upper-case) | 'b' → 'B'('B' はそのまま) |
Q1. isalnum('3') の結果として正しいものはどれか。
正解:イ
'3' は数字なので isalnum(英字または数字)は真を返す。
Q2. isgraph(' ')(スペース文字)の結果として正しいものはどれか。
正解:ア(偽)
isgraph は空白を含まない。isprint なら空白は真になる。
Q3. isspace('\t')(タブ文字)の結果として正しいものはどれか。
正解:イ(真)
isspace はスペースだけでなくタブ('\t')・改行('\n')なども空白文字として真を返す。
Q4. isxdigit('G') の結果として正しいものはどれか。
正解:ア(偽)
16進数字は '0'〜'9', 'a'〜'f', 'A'〜'F'。'G' はこの範囲外なので偽。
Q5. toupper('a') の戻り値はどれか。
正解:ウ('A')
toupper は小文字を大文字に変換する。'a' → 'A'。