年齢を計算する必要があります。次に、cプログラミングで、scanfで「ユーザー入力フィルタリング」を実行するにはどうすればよいですか。
main()
{
scanf("%d %d %d ,month,date, year);
--------;
printf("your age is"...);
}
ここで、ユーザーはアルファベットまたはいくつかの記号を入力して、cでそれらをフィルタリングする方法を教えてください。
フィルタリングによって、問題のある文字を削除することを意味する場合は、バッファー内の行を読み取って検査するか、次のようなクイックハックを使用できます。
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');
}
これがあなたが探していたものであるかどうかはわかりません-atoi
関数を使用してユーザー入力を整数に変換し、それらが有効な整数であるかどうかを確認できます。