プロが教える店舗&オフィスのセキュリティ対策術

if文とwhile(for)文の範囲の課題で4桁の数字を入力してどうこうというプログラムを作っています。

課題には書かれていませんが、4桁の数字以外を入力したときにエラーを表示させるにはどんな方法がありますか?

10000以下をはじけばいいんじゃないかと思ったのですが、これだと「0001」などもはじかれてしまうようでして、アルファベットや記号が含まれるものも同時にはじきたいのですが、何か良い方法がわかる方いましいたら、ぜひ解説をお願いします。

なお課題では、理解していれば習っていない関数も使っていいと書かれていました。こんな関数を使ってみては?というものがあれば教えていただけるとうれしいです。

A 回答 (2件)

文字列で取得しているのなら、「4桁」の判断はstrlen()が楽です。


また、同様に「数値」の判断はisdigit()が楽ですが、こっちは各桁が'0'以上'9'以下の範囲内に収まっている、という判断の仕方もありますね。
    • good
    • 0
この回答へのお礼

ありがとうございました!
strlenとisdigitを使うことにします。

お礼日時:2008/11/29 11:49

#include <stdio.h>



void main(void)
{
int i;
int n;
char c;
char buf[5];
for(;;) {
printf("数字4桁を入力して下さい:");
n = scanf("%4s",buf);
c = getchar();
if (c !='\n') {
while (getchar() != '\n') {;}
printf("入力エラー\nもう一度");
continue;
}
for (i = 0;i < 4;i++) {
if ((buf[i] < '0') || (buf[i] > '9')) {
n=0;
break;
}
}
if (n != 1) {
printf("入力エラー\nもう一度");
continue;
}
break;
}
printf("4桁の数字は[%s]です\n",buf);
}
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています