文字列に指定した文字しか入っていない事を確認する
[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のチェックを繰り返しています。
いろいろと転用出来そうな関数ですよね。