MW211 EXIT

devlog
C言語/文字チェック
2013年01月09日
PHPとかJavaScriptとかの今風の言語だと、正規表現で一発で判定できたりするのだが、
C言語だと地道に一文字ずつチェックしていくしか他ない。

一文字チェック関数をまとめた。
┌─────┬────────────────────────────────┐
│isalnum() │英数字(0~9[0x30~0x39]、A~Z[0x41~0x5A]、a~z[0x61~0x7A])    │
├─────┼────────────────────────────────┤
│isalpha() │英字(A~Z[0x41~0x5A]、a~z[0x61~0x7A])                        │
├─────┼────────────────────────────────┤
│isdigit() │数字(0~9[0x30~0x39])                                          │
├─────┼────────────────────────────────┤
│islower() │英小文字(a~z[0x61~0x7A])                                      │
├─────┼────────────────────────────────┤
│isupper() │英大文字(A~Z[0x41~0x5A])                                      │
├─────┼────────────────────────────────┤
│isxdigit()│16進(0~9[0x30~0x39]、A~F[0x41~0x46]、a~f[0x61~0x66])      │
└─────┴────────────────────────────────┘
┌─────┬────────────────────────────────┐
│isascii() │ASCII文字(0x00~0x7F)                                           │
├─────┼────────────────────────────────┤
│iscntrl() │制御文字(0x00~0x1F、0x7F)                                      │
├─────┼────────────────────────────────┤
│isgraph() │表示可能文字(0x21~0x7E)                                        │
├─────┼────────────────────────────────┤
│isprint() │印字可能文字(0x20~0x7E)                                        │
├─────┼────────────────────────────────┤
│ispunct() │区切文字(0x00~0x1F、0x20、0x7F)                                │
├─────┼────────────────────────────────┤
│isspace() │空白文字                                                        │
│          │→0x09(\t)、0x0A(\n)、0x0B(\v)、0x0C(\f)、0x0D(\r)、0x20( )     │
└─────┴────────────────────────────────┘
判定が真の時に0以外を返却し、偽の時は0を返却するというややこしい仕様だが、
これは速度向上のためらしい。

とにかく、該当しなかったら0ということでエラーにしていきゃいいと覚えるか。
といっても複合条件とか絡んでくると0以外で判定する場面は多々ありそう。
分類:C/C++