-3

scanf("%d",&num)私のプログラムで を使用して整数入力を要求し、ユーザーがたとえば char と int の文字列を入力するとどうなるのだろうと思っていましたat3stf0rfun。その場合の値はどうなりますnumか?整数のみを取得しますか、30それとも文字を ASCII 10 進数値に変換しますか?

4

1 に答える 1

4

無効な入力が検出されると、スキャンが停止します。したがって、コード内の の値はnum変更されません。

これが起こったことかどうかを検出するには、 の戻り値を調べる必要がありますscanf。引用するには man scanf

戻り値

これらの関数は、割り当てられた入力項目の数を返します。これは、一致が失敗した場合に、提供されたものよりも少なくなるか、ゼロになることさえあります。ゼロは、利用可能な入力はあったが、変換が割り当てられなかったことを示します。通常、これは `%d' 変換のアルファベット文字などの無効な入力文字が原因です。ファイルの終わりなどの変換が発生する前に入力エラーが発生した場合、値 EOF が返されます。変換の開始後にエラーまたはファイルの終わりが発生した場合、正常に完了した変換の数が返されます。

于 2013-04-08T08:24:10.073 に答える