ispunct

文字が区切り文字 (punctuation character) かどうかをチェックします.

#include <ctype.h>
int ispunct(
    int c /* int 型の文字 */
);

ispunct 関数は文字 c が区切り文字なら真を返します.
ここでの "区切り文字" とは,主に英文の句読点として使われる文字を指します.したがって,スペース (' ') や,タブ ('\t') は偽として判定されます.

デフォルトのロケール (locale) の設定 ("C" ロケール) で ispunct 関数が真を返す文字を以下に示します.

区切り文字一覧

文字コード文字文字コード文字文字コード文字
0x21!0x2c,0x5b[
0x22"0x2d-0x5c\
0x23#0x2e.0x5d]
0x24$0x2f/0x5e^
0x25%0x3a:0x5f_
0x26&0x3b;0x60`
0x27'0x3c<0x7b{
0x28(0x3d=0x7c|
0x29)0x3e>0x7d}
0x2a*0x3f?
0x2b+0x40@

戻り値

  • c が区切り文字であるとき: 真 (0 以外)
  • c が区切り文字以外であるとき: 偽 (0)

C言語サンプルプログラム

ispunct 関数を使用して,入力された文字が区切り文字かどうかをチェックするサンプルプログラムを以下に示します.

/* header files */
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>

/* main */
int main(void) {
    int c[] = {' ', '!', '\"', '#', '$',
        '%', '&', '\'', '(', ')',
        '*', '+', ',', '-', '.', '/', '0'};
    int i;

    for ( i = 0; i < 17; i++ ) {
        /* 文字チェック */
        if ( ispunct(c[i])) {
            printf("%c ==> 真\n", c[i]);
        } else {
            printf("%c ==> 偽\n", c[i]);
        }
    }

    return EXIT_SUCCESS;
}

実行例

サンプルプログラムの実行結果は以下のようになります.

  ==> 偽
! ==> 真
" ==> 真
# ==> 真
$ ==> 真
% ==> 真
& ==> 真
' ==> 真
( ==> 真
) ==> 真
* ==> 真
+ ==> 真
, ==> 真
- ==> 真
. ==> 真
/ ==> 真
0 ==> 偽

Cプログラマの必読書

たくさんあるC言語関連の書籍の中でも特に役に立った本です.よかったら参考にしてみてください.

C実践プログラミング 第3版

C言語の実践的参考書.少々値段は張りますが初心者を脱しようとしている人は絶対に読むべきです.
文法だけでなく,コーディングスタイルやデバッグなど文字通り「実践的」なことが書かれているので非常にためになります. オライリーの本は,読みにくい本が多いのですが本書はとても読みやすくオススメです.


C言語ポインタ完全制覇 (標準プログラマーズライブラリ)

ポインタの解説書としては最高の書籍です.
この1冊でポインタを完全に理解することができます.全くの初学者が読むには敷居が高いですが,入門書を読み終えた後に読むと非常に有益です.