C言語編 標準ライブラリのリファレンス「I」

このエントリーをはてなブックマークに追加

「I」で始まる標準ライブラリ関数及び、その他の定義です。

imaxabs

概要 絶対値を求める。
ヘッダ inttypes.h
形式 intmax_t imaxabs(intmax_t i);
引数 i 絶対値を求める対象の値。
戻り値 引数i の絶対値。
詳細
注意 結果が表現できない場合の動作は未定義。
使用例
#include <stdio.h>
#include <stdint.h>
#include <inttypes.h>

int main(void)
{
	intmax_t a = INTMAX_C(1000);
	intmax_t b = INTMAX_C(-1000);

	printf( "%" PRIdMAX "\n", imaxabs(a) );
	printf( "%" PRIdMAX "\n", imaxabs(b) );

	return 0;
}

実行結果

1000
1000
関連
解説章

INTMAX_C

概要 intmax_t型の定数に展開される。
ヘッダ stdint.h
形式 #define INTMAX_C(value) (value ## LL)
引数 value 定数値。
置換結果 引数value を、intmax_t型の定数値に展開したもの。
詳細 引数value は、10進数、8進数、16進数のいずれかの定数でなければならない。
注意
使用例
#include <stdio.h>
#include <stdint.h>
#include <inttypes.h>

int main(void)
{
	intmax_t a = INTMAX_C(1000);
	printf( "%" PRIdMAX "\n", a );

	return 0;
}

実行結果:

1000
関連
解説章

INTMAX_MAX

概要 intmax_t型の最大値を表す。
ヘッダ stdint.h
形式 #define INTMAX_MAX 9223372036854775807
置換結果 intmax_t型で表現可能な最大値。
詳細
注意
使用例
#include <stdio.h>
#include <stdint.h>
#include <inttypes.h>

int main(void)
{
	printf( "%" PRIdMAX "\n", INTMAX_MAX );

	return 0;
}

実行結果:

9223372036854775807
関連 intmax_t型の最小値は INTMAX_MIN で表される。
解説章

INTMAX_MIN

概要 intmax_t型の最小値を表す。
ヘッダ stdint.h
形式 #define INTMAX_MIN -9223372036854775808
置換結果 intmax_t型で表現可能な最小値。
詳細
注意
使用例
#include <stdio.h>
#include <stdint.h>
#include <inttypes.h>

int main(void)
{
	printf( "%" PRIdMAX "\n", INTMAX_MIN );

	return 0;
}

実行結果:

-9223372036854775808
関連 intmax_t型の最大値は INTMAX_MAX で表される。
解説章

INT_MAX

概要 int型の最大値を表す。
ヘッダ limits.h
形式 #define INT_MAX 2147483647
置換結果 int型で表現可能な最大値。
詳細
注意 int型の大きさはコンパイラ依存であり、上記の形式は int型が 32bit の環境の場合である。
ただし、16bit未満であることはあり得ない。
使用例
#include <stdio.h>
#include <limits.h>

int main(void)
{
	printf( "%d\n", INT_MAX );

	return 0;
}

実行結果:

2147483647
関連 int型の最小値は INT_MIN で表される。
解説章 第20章

INT_MIN

概要 int型の最小値を表す。
ヘッダ limits.h
形式 #define INT_MIN -2147483648
置換結果 int型で表現可能な最小値。
詳細
注意 int型の大きさはコンパイラ依存であり、上記の形式は int型が 32bit の環境の場合である。
ただし、16bit未満であることはあり得ない。
使用例
#include <stdio.h>
#include <limits.h>

int main(void)
{
	printf( "%d\n", INT_MIN );

	return 0;
}

実行結果:

-2147483648
関連 int型の最大値は INT_MAX で表される。
解説章 第20章

intmax_t

概要 符号付きの最大整数型。
ヘッダ stdint.h
形式 typedef long long int intmax_t;
詳細 コンパイラが対応している最もサイズの大きい符号付き整数型。 long long int のような標準の型よりも大きい可能性もあるため、コード内に定数値を記述する際には、 INTMAX_Cマクロを使い、intmax_t型の値を返してもらうようにする。
注意 この型の大きさは、環境によって異なる。
使用例
#include <stdio.h>
#include <stdint.h>
#include <inttypes.h>

int main(void)
{
	intmax_t a = INTMAX_C(1000);
	printf( "%" PRIdMAX "\n", a );

	return 0;
}

実行結果:

1000
関連 intmax_t型の定数値を、INTMAX_Cマクロで得られる。 また、intmax_t型で表現できる最小値は INTMAX_MIN、最大値は INTMAX_MAX で定義されている。
printf関数系の変換指定文字として、PRIdMAXPRIiMAX が、 scanf関数系の変換指定文字として、SCNdMAXSCNiMAXの各マクロがある。
符号なしの最大整数型として uintmax_t型がある。
解説章

isalnum関数

概要 英数字かどうか判定する。
ヘッダ ctype.h
形式 int isalnum(int c);
引数 c 判定する文字。
戻り値 引数c が英数字であれば 0以外を返し、そうでなければ 0 を返す。
詳細 英数字とは、大文字のアルファベット、小文字のアルファベット、数字を合わせた文字集合である。 したがって、isalpha関数isdigit関数がいずれも真を返すような文字である。
注意 引数c が 0〜UCHAR_MAX あるいは EOF のいずれかに含まれていない場合の動作は未定義である。
使用例
#include <stdio.h>
#include <ctype.h>
#include <limits.h>

int main(void)
{
	int i;

	for( i = 0; i < UCHAR_MAX; ++i ){
		if( isalnum(i) ){
			printf( "%c (%x)\n", i, i );
		}
	}

	return 0;
}

実行結果

0 (30)
1 (31)
2 (32)
3 (33)
4 (34)
5 (35)
6 (36)
7 (37)
8 (38)
9 (39)
A (41)
B (42)
C (43)
D (44)
E (45)
F (46)
G (47)
H (48)
I (49)
J (4a)
K (4b)
L (4c)
M (4d)
N (4e)
O (4f)
P (50)
Q (51)
R (52)
S (53)
T (54)
U (55)
V (56)
W (57)
X (58)
Y (59)
Z (5a)
a (61)
b (62)
c (63)
d (64)
e (65)
f (66)
g (67)
h (68)
i (69)
j (6a)
k (6b)
l (6c)
m (6d)
n (6e)
o (6f)
p (70)
q (71)
r (72)
s (73)
t (74)
u (75)
v (76)
w (77)
x (78)
y (79)
z (7a)
関連 英字は isalpha関数で、 数字は isdigit関数で判定できる。
なお、C95以降であれば、ワイド文字を対象とした iswalnum関数が追加されている。
解説章

isalpha関数

概要 英字かどうか判定する。
ヘッダ ctype.h
形式 int isalpha(int c);
引数 c 判定する文字。
戻り値 引数c が英字であれば 0以外を返し、そうでなければ 0 を返す。
詳細 英字とは、大文字のアルファベット、小文字のアルファベットを合わせた文字集合である。
注意 引数c が 0〜UCHAR_MAX あるいは EOF のいずれかに含まれていない場合の動作は未定義である。
使用例
#include <stdio.h>
#include <ctype.h>
#include <limits.h>

int main(void)
{
	int i;

	for( i = 0; i < UCHAR_MAX; ++i ){
		if( isalpha(i) ){
			printf( "%c (%x)\n", i, i );
		}
	}

	return 0;
}

実行結果

A (41)
B (42)
C (43)
D (44)
E (45)
F (46)
G (47)
H (48)
I (49)
J (4a)
K (4b)
L (4c)
M (4d)
N (4e)
O (4f)
P (50)
Q (51)
R (52)
S (53)
T (54)
U (55)
V (56)
W (57)
X (58)
Y (59)
Z (5a)
a (61)
b (62)
c (63)
d (64)
e (65)
f (66)
g (67)
h (68)
i (69)
j (6a)
k (6b)
l (6c)
m (6d)
n (6e)
o (6f)
p (70)
q (71)
r (72)
s (73)
t (74)
u (75)
v (76)
w (77)
x (78)
y (79)
z (7a)
関連 大文字のアルファベットかどうかは isupper関数で、 小文字かどうかは islower関数で判定できる。
なお、C95以降であれば、ワイド文字を対象とした iswalpha関数が追加されている。
解説章

isblank関数

概要 単語を区切る文字かどうか判定する。
ヘッダ ctype.h
形式 int isblank(int c);
引数 c 判定する文字。
戻り値 引数c が、単語を区切ることに使われる文字であれば 0以外を返し、そうでなければ 0 を返す。
詳細 単語を区切る文字とは、空白文字('')、タブ文字('\t') である。 これら以外に、ロケールに応じてそのほかの文字が追加されることがある。
注意
使用例
#include <stdio.h>
#include <ctype.h>
#include <limits.h>

int main(void)
{
	int i;

	for( i = 0; i < UCHAR_MAX; ++i ){
		if( isblank(i) ){
			printf( "%c (%x)\n", i, i );
		}
	}

	return 0;
}

実行結果

         (9)
  (20)
関連 ワイド文字を対象とした iswblank関数がある。
解説章

iscntrl関数

概要 制御文字かどうか判定する。
ヘッダ ctype.h
形式 int iscntrl(int c);
引数 c 判定する文字。
戻り値 引数c が制御文字であれば 0以外を返し、そうでなければ 0 を返す。
詳細 制御文字とは、画面に出力したとき領域を消費しないような文字を指す。 つまり、isprint関数が偽となるような文字である。
注意 引数c が 0〜UCHAR_MAX あるいは EOF のいずれかに含まれていない場合の動作は未定義である。
使用例
#include <stdio.h>
#include <ctype.h>
#include <limits.h>

int main(void)
{
	int i;

	for( i = 0; i < UCHAR_MAX; ++i ){
		if( iscntrl(i) ){
			printf( "%c (%x)\n", i, i );
		}
	}

	return 0;
}

実行結果

 (0)
 (1)
 (2)
 (3)
 (4)
 (5)
 (6)
 (7)
 (8)
	 (9)

 (a)
 (b)
 (c)

 (d)
 (e)
 (f)
 (10)
 (11)
 (12)
 (13)
 (14)
 (15)
 (16)
 (17)
 (18)
 (19)
 (1a)
 (1b)
 (1c)
 (1d)
 (1e)
 (1f)
 (7f)
関連 C95以降であれば、ワイド文字を対象とした iswcntrl関数が追加されている。
解説章

isdigit関数

概要 数字かどうか判定する。
ヘッダ ctype.h
形式 int isdigit(int c);
引数 c 判定する文字。
戻り値 引数c が数字であれば 0以外を返し、そうでなければ 0 を返す。
詳細
注意 引数c が 0〜UCHAR_MAX あるいは EOF のいずれかに含まれていない場合の動作は未定義である。
使用例
#include <stdio.h>
#include <ctype.h>
#include <limits.h>

int main(void)
{
	int i;

	for( i = 0; i < UCHAR_MAX; ++i ){
		if( isdigit(i) ){
			printf( "%c (%x)\n", i, i );
		}
	}

	return 0;
}

実行結果

0 (30)
1 (31)
2 (32)
3 (33)
4 (34)
5 (35)
6 (36)
7 (37)
8 (38)
9 (39)
関連 16進数を表現するために使われる 0〜9、a〜f、A〜F のいずれかを判定するために isxdigit関数 も存在している。
なお、C95以降であれば、ワイド文字を対象とした iswdigit関数が追加されている。
解説章

isgraph関数

概要 図形文字かどうか判定する。
ヘッダ ctype.h
形式 int isgraph(int c);
引数 c 判定する文字。
戻り値 引数c が図形文字であれば 0以外を返し、そうでなければ 0 を返す。
詳細 図形文字とは、印字文字(画面やプリンタに出力した際に1文字分の領域を消費する文字)から空白文字を除いたものである。
注意 引数c が 0〜UCHAR_MAX あるいは EOF のいずれかに含まれていない場合の動作は未定義である。
使用例
#include <stdio.h>
#include <ctype.h>
#include <limits.h>

int main(void)
{
	int i;

	for( i = 0; i < UCHAR_MAX; ++i ){
		if( isgraph(i) ){
			printf( "%c (%x)\n", i, i );
		}
	}

	return 0;
}

実行結果

! (21)
" (22)
# (23)
$ (24)
% (25)
& (26)
' (27)
( (28)
) (29)
* (2a)
+ (2b)
, (2c)
- (2d)
. (2e)
/ (2f)
0 (30)
1 (31)
2 (32)
3 (33)
4 (34)
5 (35)
6 (36)
7 (37)
8 (38)
9 (39)
: (3a)
; (3b)
< (3c)
= (3d)
> (3e)
? (3f)
@ (40)
A (41)
B (42)
C (43)
D (44)
E (45)
F (46)
G (47)
H (48)
I (49)
J (4a)
K (4b)
L (4c)
M (4d)
N (4e)
O (4f)
P (50)
Q (51)
R (52)
S (53)
T (54)
U (55)
V (56)
W (57)
X (58)
Y (59)
Z (5a)
[ (5b)
\ (5c)
] (5d)
^ (5e)
_ (5f)
` (60)
a (61)
b (62)
c (63)
d (64)
e (65)
f (66)
g (67)
h (68)
i (69)
j (6a)
k (6b)
l (6c)
m (6d)
n (6e)
o (6f)
p (70)
q (71)
r (72)
s (73)
t (74)
u (75)
v (76)
w (77)
x (78)
y (79)
z (7a)
{ (7b)
| (7c)
} (7d)
~ (7e)
関連 空白文字も真と判定したければ isprint関数を使う。 また、空白文字を判定したければ isspace関数がある。
なお、C95以降であれば、ワイド文字を対象とした iswgraph関数が追加されている。
解説章

islower関数

概要 小文字のアルファベットかどうか判定する。
ヘッダ ctype.h
形式 int islower(int c);
引数 c 判定する文字。
戻り値 引数c が小文字のアルファベットであれば 0以外を返し、そうでなければ 0 を返す。
詳細
注意 引数c が 0〜UCHAR_MAX あるいは EOF のいずれかに含まれていない場合の動作は未定義である。
使用例
#include <stdio.h>
#include <ctype.h>
#include <limits.h>

int main(void)
{
	int i;

	for( i = 0; i < UCHAR_MAX; ++i ){
		if( islower(i) ){
			printf( "%c (%x)\n", i, i );
		}
	}

	return 0;
}

実行結果

a (61)
b (62)
c (63)
d (64)
e (65)
f (66)
g (67)
h (68)
i (69)
j (6a)
k (6b)
l (6c)
m (6d)
n (6e)
o (6f)
p (70)
q (71)
r (72)
s (73)
t (74)
u (75)
v (76)
w (77)
x (78)
y (79)
z (7a)
関連 大文字のアルファベットかどうかは、isupper関数で判定できる。
なお、C95以降であれば、ワイド文字を対象とした iswlower関数が追加されている。
解説章

isprint関数

概要 印字文字かどうか判定する。
ヘッダ ctype.h
形式 int isprint(int c);
引数 c 判定する文字。
戻り値 引数c が印字文字であれば 0以外を返し、そうでなければ 0 を返す。
詳細 印字文字とは、画面やプリンタなどに出力した際、1文字分の領域を消費するものを指す。 したがって、空白文字も含まれる。
注意 引数c が 0〜UCHAR_MAX あるいは EOF のいずれかに含まれていない場合の動作は未定義である。
使用例
#include <stdio.h>
#include <ctype.h>
#include <limits.h>

int main(void)
{
	int i;

	for( i = 0; i < UCHAR_MAX; ++i ){
		if( isprint(i) ){
			printf( "%c (%x)\n", i, i );
		}
	}

	return 0;
}

実行結果

  (20)
! (21)
" (22)
# (23)
$ (24)
% (25)
& (26)
' (27)
( (28)
) (29)
* (2a)
+ (2b)
, (2c)
- (2d)
. (2e)
/ (2f)
0 (30)
1 (31)
2 (32)
3 (33)
4 (34)
5 (35)
6 (36)
7 (37)
8 (38)
9 (39)
: (3a)
; (3b)
< (3c)
= (3d)
> (3e)
? (3f)
@ (40)
A (41)
B (42)
C (43)
D (44)
E (45)
F (46)
G (47)
H (48)
I (49)
J (4a)
K (4b)
L (4c)
M (4d)
N (4e)
O (4f)
P (50)
Q (51)
R (52)
S (53)
T (54)
U (55)
V (56)
W (57)
X (58)
Y (59)
Z (5a)
[ (5b)
\ (5c)
] (5d)
^ (5e)
_ (5f)
` (60)
a (61)
b (62)
c (63)
d (64)
e (65)
f (66)
g (67)
h (68)
i (69)
j (6a)
k (6b)
l (6c)
m (6d)
n (6e)
o (6f)
p (70)
q (71)
r (72)
s (73)
t (74)
u (75)
v (76)
w (77)
x (78)
y (79)
z (7a)
{ (7b)
| (7c)
} (7d)
~ (7e)
関連 isprint関数は空白文字も真とみなすが、空白文字を省きたければ isgraph関数が使える。 また、空白文字を判定したければ isspace関数がある。
なお、C95以降であれば、ワイド文字を対象とした iswprint関数が追加されている。
解説章

ispunct関数

概要 区切り文字かどうか判定する。
ヘッダ ctype.h
形式 int ispunct(int c);
引数 c 判定する文字。
戻り値 引数c が区切り文字であれば 0以外を返し、そうでなければ 0 を返す。
詳細 区切り文字とは、isalnum関数が偽を返す文字であり、かつ、 図形文字(=isgraph関数が真を返す)でもあるものを指す。
注意 引数c が 0〜UCHAR_MAX あるいは EOF のいずれかに含まれていない場合の動作は未定義である。
使用例
#include <stdio.h>
#include <ctype.h>
#include <limits.h>

int main(void)
{
	int i;

	for( i = 0; i < UCHAR_MAX; ++i ){
		if( ispunct(i) ){
			printf( "%c (%x)\n", i, i );
		}
	}

	return 0;
}

実行結果

! (21)
" (22)
# (23)
$ (24)
% (25)
& (26)
' (27)
( (28)
) (29)
* (2a)
+ (2b)
, (2c)
- (2d)
. (2e)
/ (2f)
: (3a)
; (3b)
< (3c)
= (3d)
> (3e)
? (3f)
@ (40)
[ (5b)
\ (5c)
] (5d)
^ (5e)
_ (5f)
` (60)
{ (7b)
| (7c)
} (7d)
~ (7e)
関連 C95以降であれば、ワイド文字を対象とした iswpunct関数が追加されている。
解説章

isspace関数

概要 空白文字かどうか判定する。
ヘッダ ctype.h
形式 int isspace(int c);
引数 c 判定する文字。
戻り値 引数c が空白文字であれば 0以外を返し、そうでなければ 0 を返す。
詳細
注意 引数c が 0〜UCHAR_MAX あるいは EOF のいずれかに含まれていない場合の動作は未定義である。
使用例
#include <stdio.h>
#include <ctype.h>
#include <limits.h>

int main(void)
{
	int i;

	for( i = 0; i < UCHAR_MAX; ++i ){
		if( isspace(i) ){
			printf( "%c (%x)\n", i, i );
		}
	}

	return 0;
}

実行結果

         (9)

 (a)

 (b)

 (c)
 (d)
  (20)
関連 C95以降であれば、ワイド文字を対象とした iswspace関数が追加されている。
解説章

isupper関数

概要 大文字のアルファベットかどうか判定する。
ヘッダ ctype.h
形式 int isupper(int c);
引数 c 判定する文字。
戻り値 引数c が大文字のアルファベットであれば 0以外を返し、そうでなければ 0 を返す。
詳細
注意 引数c が 0〜UCHAR_MAX あるいは EOF のいずれかに含まれていない場合の動作は未定義である。
使用例
#include <stdio.h>
#include <ctype.h>
#include <limits.h>

int main(void)
{
	int i;

	for( i = 0; i < UCHAR_MAX; ++i ){
		if( isupper(i) ){
			printf( "%c (%x)\n", i, i );
		}
	}

	return 0;
}

実行結果

A (41)
B (42)
C (43)
D (44)
E (45)
F (46)
G (47)
H (48)
I (49)
J (4a)
K (4b)
L (4c)
M (4d)
N (4e)
O (4f)
P (50)
Q (51)
R (52)
S (53)
T (54)
U (55)
V (56)
W (57)
X (58)
Y (59)
Z (5a)
関連 小文字のアルファベットかどうかは、islower関数で判定できる。
なお、C95以降であれば、ワイド文字を対象とした iswupper関数が追加されている。
解説章

iswalnum関数

概要 ワイド文字の英数字かどうか判定する。
ヘッダ wctype.h
形式 int iswalnum(wint_t c);
引数 c 判定する文字。
戻り値 引数c が英数字であれば 0以外を返し、そうでなければ 0 を返す。
詳細 英数字とは、大文字のアルファベット、小文字のアルファベット、数字を合わせた文字集合である。 したがって、iswalpha関数iswdigit関数がいずれも真を返すような文字である。
注意
使用例
#include <stdio.h>
#include <locale.h>
#include <wctype.h>

int main(void)
{
	wint_t c;

	setlocale( LC_CTYPE, "" );

	c = getwchar();
	printf( "%s\n", iswalnum(c) ? "true" : "false" );

	return 0;
}

実行結果

4  <-- 入力内容
true
関連 マルチバイト文字版は、isalnum関数である。
英字は iswalpha関数で、 数字は iswdigit関数で判定できる。
解説章

iswalpha関数

概要 ワイド文字の英字かどうか判定する。
ヘッダ wctype.h
形式 int iswalpha(wint_t c);
引数 c 判定する文字。
戻り値 引数c が英字であれば 0以外を返し、そうでなければ 0 を返す。
詳細 英字とは、大文字のアルファベット、小文字のアルファベットを合わせた文字集合である。
注意
使用例
#include <stdio.h>
#include <locale.h>
#include <wctype.h>

int main(void)
{
	wint_t c;

	setlocale( LC_CTYPE, "" );

	c = getwchar();
	printf( "%s\n", iswalpha(c) ? "true" : "false" );

	return 0;
}

実行結果

X  <-- 入力内容
true
関連 マルチバイト文字版は、isalpha関数である。
大文字のアルファベットかどうかは iswupper関数で、 小文字かどうかは iswlower関数で判定できる。
解説章

iswblank関数

概要 ワイド文字の単語を区切る文字かどうか判定する。
ヘッダ wctype.h
形式 wint_t iswblank(wint_t c);
引数 c 判定する文字。
戻り値 引数c が、単語を区切ることに使われる文字であれば 0以外を返し、そうでなければ 0 を返す。
詳細 単語を区切る文字とは、空白文字(L'')、タブ文字(L'\t') である。 これら以外に、ロケールに応じてそのほかの文字が追加されることがある。
注意
使用例
#include <stdio.h>
#include <wctype.h>
#include <limits.h>

int main(void)
{
	wchar_t s[] = L"xxxx yyy zzzz";

	for( wchar_t* p = s; *p != L'\0'; ++p ){
		if( iswblank(*p) ){
			*p = L'\n';
		}
	}

	fwprintf( stdout, L"%ls\n", s );

	return 0;
}

実行結果

xxxx
yyy
zzzz
関連 マルチバイト文字を対象とした isblank関数がある。
解説章

iswcntrl関数

概要 ワイド文字の制御文字かどうか判定する。
ヘッダ wctype.h
形式 int iswcntrl(wint_t c);
引数 c 判定する文字。
戻り値 引数c が制御文字であれば 0以外を返し、そうでなければ 0 を返す。
詳細 制御文字とは、画面に出力したとき領域を消費しないような文字を指す。 つまり、iswprint関数が偽となるような文字である。
注意
使用例
#include <stdio.h>
#include <locale.h>
#include <wctype.h>

int main(void)
{
	wint_t c;

	setlocale( LC_CTYPE, "" );

	c = getwchar();
	printf( "%s\n", iswcntrl(c) ? "true" : "false" );

	return 0;
}

実行結果

  <-- 入力内容(改行のみ)
true
関連 マルチバイト文字版は、iscntrl関数である。
解説章

iswdigit関数

概要 ワイド文字の数字かどうか判定する。
ヘッダ wctype.h
形式 int iswdigit(wint_t c);
引数 c 判定する文字。
戻り値 引数c が数字であれば 0以外を返し、そうでなければ 0 を返す。
詳細
注意
使用例
#include <stdio.h>
#include <locale.h>
#include <wctype.h>

int main(void)
{
	wint_t c;

	setlocale( LC_CTYPE, "" );

	c = getwchar();
	printf( "%s\n", iswdigit(c) ? "true" : "false" );

	return 0;
}

実行結果

7  <-- 入力内容
true
関連 マルチバイト文字版は、isdigit関数である。
16進数を表現するために使われる 0〜9、a〜f、A〜F のいずれかを判定するために iswxdigit関数 も存在している。
解説章

iswgraph関数

概要 ワイド文字の図形文字かどうか判定する。
ヘッダ wctype.h
形式 int iswgraph(wint_t c);
引数 c 判定する文字。
戻り値 引数c が図形文字であれば 0以外を返し、そうでなければ 0 を返す。
詳細 図形文字とは、印字文字(画面やプリンタに出力した際に1文字分の領域を消費する文字)から空白文字を除いたものである。
注意
使用例
#include <stdio.h>
#include <locale.h>
#include <wctype.h>

int main(void)
{
	wint_t c;

	setlocale( LC_CTYPE, "" );

	c = getwchar();
	printf( "%s\n", iswgraph(c) ? "true" : "false" );

	return 0;
}

実行結果

   <-- 入力内容(スペース)
false
関連 マルチバイト文字版は、isgraph関数である。
空白文字も真と判定したければ iswprint関数を使う。 また、空白文字を判定したければ iswspace関数がある。
解説章

iswlower関数

概要 ワイド文字の小文字のアルファベットかどうか判定する。
ヘッダ wctype.h
形式 int iswlower(wint_t c);
引数 c 判定する文字。
戻り値 引数c が小文字のアルファベットであれば 0以外を返し、そうでなければ 0 を返す。
詳細
注意
使用例
#include <stdio.h>
#include <locale.h>
#include <wctype.h>

int main(void)
{
	wint_t c;

	setlocale( LC_CTYPE, "" );

	c = getwchar();
	printf( "%s\n", iswlower(c) ? "true" : "false" );

	return 0;
}

実行結果

a  <-- 入力内容
true
関連 マルチバイト文字版は、islower関数である。
大文字のアルファベットかどうかは、iswupper関数で判定できる。
解説章

iswprint関数

概要 ワイド文字の印字文字かどうか判定する。
ヘッダ wctype.h
形式 int iswprint(wint_t c);
引数 c 判定する文字。
戻り値 引数c が印字文字であれば 0以外を返し、そうでなければ 0 を返す。
詳細 印字文字とは、画面やプリンタなどに出力した際、1文字分の領域を消費するものを指す。 したがって、空白文字も含まれる。
注意
使用例
#include <stdio.h>
#include <locale.h>
#include <wctype.h>

int main(void)
{
	wint_t c;

	setlocale( LC_CTYPE, "" );

	c = getwchar();
	printf( "%s\n", iswprint(c) ? "true" : "false" );

	return 0;
}

実行結果

   <-- 入力内容
true
関連 マルチバイト文字版は、isprint関数である。
iswprint関数は空白文字も真とみなすが、空白文字を省きたければ iswgraph関数が使える。 また、空白文字を判定したければ iswspace関数がある。
解説章

iswpunct関数

概要 ワイド文字の区切り文字かどうか判定する。
ヘッダ wctype.h
形式 int iswpunct(wint_t c);
引数 c 判定する文字。
戻り値 引数c が区切り文字であれば 0以外を返し、そうでなければ 0 を返す。
詳細 区切り文字とは、iswalnum関数が偽を返す文字であり、かつ、 図形文字(=iswgraph関数が真を返す)でもあるものを指す。
注意
使用例
#include <stdio.h>
#include <locale.h>
#include <wctype.h>

int main(void)
{
	wint_t c;

	setlocale( LC_CTYPE, "" );

	c = getwchar();
	printf( "%s\n", iswpunct(c) ? "true" : "false" );

	return 0;
}

実行結果

&  <-- 入力内容
true
関連 マルチバイト文字版は、ispunct関数である。
解説章

iswspace関数

概要 ワイド文字の空白文字かどうか判定する。
ヘッダ wctype.h
形式 int iswspace(wint_t c);
引数 c 判定する文字。
戻り値 引数c が空白文字であれば 0以外を返し、そうでなければ 0 を返す。
詳細
注意
使用例
#include <stdio.h>
#include <locale.h>
#include <wctype.h>

int main(void)
{
	wint_t c;

	setlocale( LC_CTYPE, "" );

	c = getwchar();
	printf( "%s\n", iswspace(c) ? "true" : "false" );

	return 0;
}

実行結果

   <-- 入力内容(スペース)
true
関連 マルチバイト文字版は、isspace関数である。
解説章

iswupper関数

概要 ワイド文字の大文字のアルファベットかどうか判定する。
ヘッダ wctype.h
形式 int iswupper(wint_t c);
引数 c 判定する文字。
戻り値 引数c が大文字のアルファベットであれば 0以外を返し、そうでなければ 0 を返す。
詳細
注意
使用例
#include <stdio.h>
#include <locale.h>
#include <wctype.h>

int main(void)
{
	wint_t c;

	setlocale( LC_CTYPE, "" );

	c = getwchar();
	printf( "%s\n", iswupper(c) ? "true" : "false" );

	return 0;
}

実行結果

A  <-- 入力内容
true
関連 マルチバイト文字版は、isupper関数である。
小文字のアルファベットかどうかは、iswlower関数で判定できる。
解説章

iswxdigit関数

概要 ワイド文字の16進数字かどうか判定する。
ヘッダ wctype.h
形式 int iswxdigit(wint_t c);
引数 c 判定する文字。
戻り値 引数c が16進数字であれば 0以外を返し、そうでなければ 0 を返す。
詳細 16進数字とは、0〜9、a〜f、A〜F のいずれかのことである。
注意
使用例
#include <stdio.h>
#include <locale.h>
#include <wctype.h>

int main(void)
{
	wint_t c;

	setlocale( LC_CTYPE, "" );

	c = getwchar();
	printf( "%s\n", iswxdigit(c) ? "true" : "false" );

	return 0;
}

実行結果

A  <-- 入力内容
true
関連 マルチバイト文字版は、isxdigit関数である。
数字のみの判定であれば、iswdigit関数 を使う。
解説章

isxdigit関数

概要 16進数字かどうか判定する。
ヘッダ ctype.h
形式 int isxdigit(int c);
引数 c 判定する文字。
戻り値 引数c が16進数字であれば 0以外を返し、そうでなければ 0 を返す。
詳細 16進数字とは、0〜9、a〜f、A〜F のいずれかのことである。
注意 引数c が 0〜UCHAR_MAX あるいは EOF のいずれかに含まれていない場合の動作は未定義である。
使用例
#include <stdio.h>
#include <ctype.h>
#include <limits.h>

int main(void)
{
	int i;

	for( i = 0; i < UCHAR_MAX; ++i ){
		if( isxdigit(i) ){
			printf( "%c (%x)\n", i, i );
		}
	}

	return 0;
}

実行結果

0 (30)
1 (31)
2 (32)
3 (33)
4 (34)
5 (35)
6 (36)
7 (37)
8 (38)
9 (39)
A (41)
B (42)
C (43)
D (44)
E (45)
F (46)
a (61)
b (62)
c (63)
d (64)
e (65)
f (66)
関連 数字のみの判定であれば、isdigit関数 を使う。
なお、C95以降であれば、ワイド文字を対象とした iswxdigit関数が追加されている。
解説章

参考リンク

Cクイックリファレンス 第2版
 -- C11対応のリファレンス。
S・P・ハービソン3世とG・L・スティール・ジュニアのCリファレンスマニュアル 第5版
 -- C99 まで網羅した最も詳細なリファレンス。
新ANSI C言語辞典
 -- 標準ライブラリについて詳しい。C99 には非対応。

更新履歴

'2017/5/2 imaxabs関数、INTMAX_C、INTMAX_MAX、INTMAX_MIN、intmax_t型の説明を追加。

'2017/4/29 iswalnum関数、iswalpha関数、iswcntrl関数、iswdigit関数、iswgraph関数、 iswlower関数、iswprint関数、iswpunct関数、iswspace関数、iswupper関数、iswxdigit関数の説明を追加。

'2017/4/16 isblank関数、iswblank関数の説明を追加。

'2011/7/23 iscntrl関数の説明を追加。

'2011/7/19 islower関数、isupper関数、isxdigit関数の説明を追加。

'2011/7/18 isalnum関数、isalpha関数、isdigit関数、ispunct関数の説明を追加。

'2011/7/16 isgraph関数、isprint関数、isspace関数の説明を追加。

'2009/11/21 INT_MAX、INT_MIN の説明を追加。

'2009/6/24 新規作成。



標準ライブラリのリファレンスのトップページへ

C言語編のトップページへ

Programming Place Plus のトップページへ