◆◇◆ Tips! ◆◇◆

文字列に指定した文字しか入っていない事を確認する

[Japanese Pocket C User's Page]-[Tips!]


1.利用文字を規制する場合

文字列を使い、なんらかのコードを示す場合は、利用する文字列を限定する必要があります。

例1)日付・・・数字と"/"以外は認めない

例2)16進数・・・0〜9、A〜F

コードを現わす文字列に、指定した文字列しか入っていないことを確認するためには、
使い方の良く分からん関数strspnと、関数strlenの値を比較すると簡単に確認出来ます。

 

2.サンプルプログラム(strspn.pc)



int chk_calc(string str)
{
// 文字列に四則演算以外の文字が含まれているかを確認 
int len_str;
int len_ok;
string str_def;

str_def="0123456789+-*/="; // 四則演算の文字の定義

len_str=strlen(str);		// 文字列の長さ
len_ok=strspn(str,str_def); // 定義された文字の長さ
if ( len_str == len_ok)
	{
	return 1;	// 四則演算の文字しか使われていなければ1
	}
else
	{
	return 0; // 四則演算の文字以外が使われていれば0
	}
}

main()
{
string str_in;
int	ans;

graph_off();
while(str_in!="end") //"end"と入力されるまで無限ループ
	{
	str_in=gets("Input string");
	ans=chk_calc(str_in);
	putsl(str_in+" : "+ans);
	}
}

 


3.解説
今回のポイントは関数chk_calcです。
この関数は
・四則演算と数字しか入っていなければ1
・それ以外の文字を含んでいる場合は0
を返します。
あとはmainの中で、入力された文字列に対して、
関数chk_calcのチェックを繰り返しています。

 

いろいろと転用出来そうな関数ですよね。

[Japanese Pocket C User's Page]-[Tips!]