は、数字 ('0' - '9') ではない!isdigit( ch )
ことをテストします。これは、文字以外のすべての非数字文字を対象とするため、 letterch
のテストと同じではありません。true
この場合、それは!isdigit( ch )
実際にはまさにあなたが望むものである可能性がありますが、特に文字をチェックしたい場合は、 を使用しますisalpha( ch )
。
文字列全体で有効な文字を一度に (つまり、ループなしで) チェックしたい場合は、次のように簡単に使用できます。
if( strspn( telehone_num, "0123456789" != strlen(telephone_num) )
{
printf("Please enter numbers only.");
Menu();
}
ここで、 telephone_num は C 文字列 (int ではありません) です。もちろん、C ではなくこの C++ にタグを付けたので、std::string を使用したより良い解決策が考えられます。
それを超えて、許可したいさまざまな地域の電話番号に関する特定の規則があると考えるかもしれません. たとえば、英国では市外局番と市内番号をスペースで区切るのが一般的です。
01225 123456
さらに、国際ユーザーは番号を次のように表現する場合があります。
+44 (0)1225 123456
「英国外から電話をかける場合は、市内の国際電話番号に続いて 44 をダイヤルし、次に市外局番の先頭の 0 を省略して加入者番号をダイヤルします」という意味です。これだけの情報を数字だけで伝えるのは困難です。人間ではなく機械が番号をダイヤルする場合を除き、ユーザーが好きなように入力できるようにした方がよい場合があります。