ctype.hに入ってるis*****のやつら

皆さん大好きprintf()scanf()などはstdio.h(standard input/output header)に宣言されているのはもう覚えましたか?
(まだの人は覚えてね)

んでctype.hに入ってるやつらを覚えないと試験に受かりません(涙目)
これらの関数はすべてint is(int c)の名前で宣言されています。
戻り値は「引数cがだったら、真、それ以外は偽を返す」と言う関数です。
(C言語の真は0以外の値、偽は0です。(-1も1も真, 0のみ偽))
の部分が何を指してるかは、英語の知識が少しあれば何となく想像つきますので、丸暗記まではしなくても大丈夫です。

int isalnum(int c)

  • int isalnum(int c); //英数字かどうか
    • Is alphabet or number ?
    • 英数字とは、大文字のアルファベット、小文字のアルファベット、数字を合わせた文字集合
    • isalpha関数が真なものがアルファベット、isdigit関数が真なものが数字、なのでそのどちらか。
    • '0'~'9', 'a'~'z', 'A'~'Z'

int alpha(int c)

  • int alpha(int c); //英文字かどうか
    • Is alphabet ?
    • 英字(アルファベット)とは、大文字のアルファベット、小文字のアルファベットを合わせた文字集合
    • 'a'~'z', 'A'~'Z'

int isdigit(int c)

  • int isdigit(int c); //英数字かどうか
    • Is digit character ?
    • 数字とは、10進数で使用される 10種類の文字のことである。
    • '0'~'9'

int isupper(int c)

  • int isupper(int c); //大文字かどうか
    • Is upper character ?
    • 大文字のアルファベットかどうか
    • 'A'~'Z'

int islower(int c)

  • int islower(int c); //小文字かどうか
    • Is lower character ?
    • 小文字のアルファベットかどうか
    • 'a'~'z'

int iscntrl(int c)

  • int iscntrl(int c); //制御文字かどうか
    • Is controll character ?
    • 制御文字とは、画面に出力したとき領域を消費しないような文字
    • Tabとか改行とか画面に出ないけど、画面をコントロールするための文字

int isprint(int c)

  • int isprint(int c); //印字文字かどうか
    • Is isprint character ?
    • 印字文字は画面やプリンタに出力した際に1文字分の領域を消費する文字、空白文字を含む
    • 印字できる文字すべて('0'~'9', 'a'~'z', 'A'~'Z'と'*'とか'?'とかの記号全部と半角スペース)

int isgraph(int c)

  • int isgraph(int c); //図形文字かどうか
    • Is graph character ?
    • 図形文字とは、印字文字(画面やプリンタに出力した際に1文字分の領域を消費する文字)から、空白文字を除いたもの
    • 半角スペース以外の、印字できる文字すべて('0'~'9', 'a'~'z', 'A'~'Z'と'*'とか'?'とかの記号全部)

int ispunct(int c)

  • int ispunct(int c); //区切り文字かどうか
    • Is punctuation character ?
    • 区切り文字(punctuation)とは、区切り文字とは、isalnum関数が偽を返す文字であり、かつ、図形文字(=isgraph関数が真を返す)でもあるもの
    • '!', “?”, “@“ 等がある(参考プログラム参照)

int isspace(int c)

  • int isspace(int c); //空白文字かどうか
    • Is space character ?
    • 半角スペースかどうかを判定する

int isxdigit(int c)

  • int isxdigit(int c); //16進文字かどうか
    • Is hexadecimal character ?
    • 16進数に使われる文字かどうかの判定('0'~'9', 'a'~'f', 'A'~'F')

int tolower(int c)

  • int tolower(int c); //大文字⇒小文字に変換
    • Convert to Lower Characer ?
    • 大文字を小文字に変換する 'A' ⇒ 'a'

int toupper(int c)

  • int toupper(int c); //小文字⇒大文字に変換
    • Convert to Upper Characer ?
    • 大文字を小文字に変換する 'a' ⇒ 'A'

とか言っても、どの文字がどの関数で真を返すのかいまいちわからないと思います。
ので、少しSiv3Dでおもちゃを作ってみました。

Fig. 1: asciicodeview.exe:右のセレクタで、is****を選択するとその関数で真を返す文字が強調表示されます。
また、文字にカーソルを合わせると、その文字のASCIIコードの値が「10進数(16進数)」で表示されます。

ダウンロードはこちらから!

  • game-engineer/classes/2022/game-programing-1/second-term/02/02-2-xx.txt
  • 最終更新: 3年前
  • by root