[PR]

ある文字が特定の文字類に属するかどうか調べる

戻る

 文字類判定関数を使って、ある文字が特定の文字類に属するかどうかを調べることができる。

isalnum……英数字
isdigit……10進数字
isxdigit……16進数字
isalpha……アルファベット
isupper……大文字
islower……小文字
isspace……空白文字
isprint……印字可能文字
isgraph……空白以外の印字可能文字
ispunct……区切り文字
iscntrl……制御文字
   

 上記以外の文字群に属するかどうかを調べる場合には、関数 strchr() を使うと便利なことが多い。
 ただし、関数 strchr() を使う場合は、文字 '\0' の扱いに注意しなければならない。
 関数 strchr() で文字 '\0' を検索すると、関数 strchr() は常に NULL でない値を返す。
 これは、第一引数の文字列が常に文字列終端文字 '\0' を含むからである。

関数 strchr() を使って母音を判定する例

/* 母音(アルファベット)であれば真を返す。 */
int isvowel( int c )
{
	return ('\0'!=c) && strchr("aeiou", tolower(c));
}//isvowel

/* 母音(カタカナ)であれば真を返す。 */
int isvowelkana( int c )
{
	// 文字列 "アイウエオ" は実際には半角カタカナである
	return ('\0'!=c) && strchr("アイウエオ", c);
}//isvowelkana

//*********************************************************
// 母音を列挙する。
//*********************************************************
int main( void )
{
	int c;

	puts( "<母音>" ); fputs( "アルファベット:", stdout );
	for( c = 0; c <= UCHAR_MAX; c++ )
	{
		if ( isvowel(c) ) 
			printf( "%c, ", c );
	}
	puts(""); fputs( "   カタカナ:", stdout );
	for( c = 0; c <= UCHAR_MAX; c++ )
	{
		if ( isvowelkana(c) )
			printf( "%c, ", c );
	}
	puts("");
	return 0;
}//main

実行結果

 <母音>
 アルファベット:A, E, I, O, U, a, e, i, o, u,
    カタカナ:ア, イ, ウ, エ, オ,

関連

文字関数(isalnum, toupper など) 使用上の注意



Google
ご意見・ご感想をお聞かせ下さい。匿名で送信できます。

 * 返信が必要な場合には postmaster@katsura-kotonoha.sakura.ne.jp へ直接メールしてください。

水無瀬 優 postmaster@katsura-kotonoha.sakura.ne.jp
>> Amazon.co.jp 『たまゆら童子』 へ
>> 楽天ブックス 『たまゆら童子』 へ