1
int a;
scanf("%d",&a);

scanf()ステートメントへの入力として数字以外の文字が指定された場合、コードが機能しないようにするにはどうすればよいですか? [データ型を に変更させない解決策が必要ですchar]

4

3 に答える 3

2

最初の文字が数字でない場合、%d一致に失敗し、a割り当てられません。の戻り値は、scanf割り当てられたアイテムの数を示します。1 の場合、少なくとも部分的には有効な数値であることは明らかです。ゼロの場合は、数値として解析できなかったことを意味し、エラーを通知する必要がある場合があります。

于 2013-06-24T06:34:57.567 に答える
2

戻りコードは、scanfarg リスト内の項目がいくつ埋められたかを示します。これはまだあなたが望むものではないかもしれません: 入力 "123four" が a=123 で 1 を返すことがわかると思います。

于 2013-06-24T06:35:16.457 に答える
0

次のようなユーザーからの入力を検証するために do while ループを使用できます。

int read,a;
do {
        read = scanf("%c", &a);
    }while(read != EOF && a != '\n'); //change validation here according to condition
于 2013-06-24T06:40:37.940 に答える