- ベストアンサー
コマンドラインからの入力で
数字以外が入力されたらエラー表示を出したいのですが数字以外と言うのは0~9以外のことを指すんですよね!?ここのプログラミング部分がわからないので教えてもらえますか? お願いします。
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
標準ライブラリにisdigitというものがあります。 int isdigit(int c); これは、あたえられた文字cが数字であるかないかを判定します。 これをつかってをつくればいいと思います。 int isdigitstr(const char* str){ while(*str != '\0'){ if(isdigit(*str) == 0) return 0;// 与えられた文字は数字以外を含みます。 str++; //次の文字にすすめる } return 1; //与えられた文字列は、数字です。 } char* alpha = "abcde" => 0 char* digit = "01234" => 1 char* digitalpha = "012ab" => 0 となります。
その他の回答 (4)
- cnyumonsha
- ベストアンサー率0% (0/4)
char型がint型でいう何であるかに気をつけてみたらわかりますよ。
- BLUEPIXY
- ベストアンサー率50% (3003/5914)
数字が0-9 のキャラクタのことならそれでいいかと思います。 その場合、#2のような感じでいいと思います。 数値と言った場合には、- 符号や小数点があったり、 1.23E08 のような指数表示であったり、 あるいは、0xFE のような16進とか10進以外の基数の数値であったりするかもしれません。
- jacta
- ベストアンサー率26% (845/3158)
> 数字以外が入力されたらエラー表示を出したいのですが数字以外と言うのは0~9以外のことを指すんですよね!? そんなことをここで聞かれてもわかるはずがありません。仕様をよく確認してください。 0~9以外に、0~9(半角)はもちろん、ローマ数字とか、漢数字も数字とみなす可能性も十分考えられます。
- επιστημη(@episteme)
- ベストアンサー率46% (546/1184)
int a; scanf("%d",&a); なんてコードではエラー検出は難しい。 gets/fgets等で一旦文字列として読み込み、チェックを行う。 しかるのちsscanfで取り出す。