0

倉庫内のアイテムを追跡するプログラムを C で作成しています。

そして、ユーザーに少なくとも1つの数字を含めるように強制したい! 例 dvd1、dvd2。ハロー1、ハロー20

これを行う方法はありますか?現時点ではscanfを使用しています。

製品コードに xx-xxx-xxx の要件形式を持たせたいのですが、x は数字です。

scanf を使用しています ( %[0-9-]s

Mvhアントン!

4

2 に答える 2

1

scanf はそのようには機能しません。詳細な検証はありません。

入力を char 配列に読み込み、各文字をループして数字かどうかを確認する必要があります。

このようなもの(テストされていません):

char buffer[1000];
int i = 0, hasDigit = 0;

scanf("%s", buffer);
while (i < sizeof(buffer) && buffer[i] != 0 && !hasDigit)
{
  hasDigit = isdigit(buffer[i]);
  i++;
}

// if hasDigit is 0, there are no digits

注: バッファに収まらない文字数を入力すると、バッファ オーバーフローが発生する可能性があるため、scanf は適切ではありません。fgets(buffer, sizeof(buffer), stdin); を使用することをお勧めします。

于 2013-10-28T18:24:11.903 に答える
0

入力を読むと、 This SO questionのように繰り返すことができます。charsその時点から、必要な入力と一致するかどうかを簡単に確認できます。

于 2013-10-28T18:25:25.557 に答える