-1

年齢を計算する必要があります。次に、cプログラミングで、scanfで「ユーザー入力フィルタリング」を実行するにはどうすればよいですか。

 main()
 {
 scanf("%d %d %d ,month,date, year);
 --------;
 printf("your age is"...);
 }

ここで、ユーザーはアルファベットまたはいくつかの記号を入力して、cでそれらをフィルタリングする方法を教えてください。

4

2 に答える 2

3

フィルタリングによって、問題のある文字を削除することを意味する場合は、バッファー内の行を読み取って検査するか、次のようなクイックハックを使用できます。

scanf("%d%*[^0-9]%d%*[^0-9]%d", &month, &day, &year);

ここで、*after%は読み取りと破棄を意味し^0-9、括弧内は0から9以外の文字を意味します。考えられる落とし穴:最初の文字が不要な場合、scanf失敗します。最初にaを入れる%*[^0-9]と、数字で始まる入力は失敗します。

または、失敗した場合にユーザーに適切な入力を求めます(前の場合は、の戻り値も確認する必要がありますscanf)。

while (scanf("%d %d %d", &month, &day, &year) != 3)
{
    printf("bad input! Retry\n");
    /* possibly flush the line: */
    while (!feof(stdin) && fgetc(stdin) != '\n');
}
于 2012-10-11T14:49:00.573 に答える
0

これがあなたが探していたものであるかどうかはわかりません-atoi関数を使用してユーザー入力を整数に変換し、それらが有効な整数であるかどうかを確認できます。

于 2012-10-11T14:42:48.907 に答える