int a;
scanf("%d",&a);
scanf()ステートメントへの入力として数字以外の文字が指定された場合、コードが機能しないようにするにはどうすればよいですか? [データ型を に変更させない解決策が必要ですchar]
最初の文字が数字でない場合、%d一致に失敗し、a割り当てられません。の戻り値は、scanf割り当てられたアイテムの数を示します。1 の場合、少なくとも部分的には有効な数値であることは明らかです。ゼロの場合は、数値として解析できなかったことを意味し、エラーを通知する必要がある場合があります。
戻りコードは、scanfarg リスト内の項目がいくつ埋められたかを示します。これはまだあなたが望むものではないかもしれません: 入力 "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