int a;
scanf("%d",&a);
scanf()
ステートメントへの入力として数字以外の文字が指定された場合、コードが機能しないようにするにはどうすればよいですか? [データ型を に変更させない解決策が必要ですchar
]
最初の文字が数字でない場合、%d
一致に失敗し、a
割り当てられません。の戻り値は、scanf
割り当てられたアイテムの数を示します。1 の場合、少なくとも部分的には有効な数値であることは明らかです。ゼロの場合は、数値として解析できなかったことを意味し、エラーを通知する必要がある場合があります。
戻りコードは、scanf
arg リスト内の項目がいくつ埋められたかを示します。これはまだあなたが望むものではないかもしれません: 入力 "123four" が a=123 で 1 を返すことがわかると思います。
次のようなユーザーからの入力を検証するために do while ループを使用できます。
int read,a;
do {
read = scanf("%c", &a);
}while(read != EOF && a != '\n'); //change validation here according to condition