scanf("%d",&num)
私のプログラムで を使用して整数入力を要求し、ユーザーがたとえば char と int の文字列を入力するとどうなるのだろうと思っていましたat3stf0rfun
。その場合の値はどうなりますnum
か?整数のみを取得しますか、30
それとも文字を ASCII 10 進数値に変換しますか?
質問する
58 次
1 に答える
4
無効な入力が検出されると、スキャンが停止します。したがって、コード内の の値はnum
変更されません。
これが起こったことかどうかを検出するには、 の戻り値を調べる必要がありますscanf
。引用するには man scanf
:
戻り値
これらの関数は、割り当てられた入力項目の数を返します。これは、一致が失敗した場合に、提供されたものよりも少なくなるか、ゼロになることさえあります。ゼロは、利用可能な入力はあったが、変換が割り当てられなかったことを示します。通常、これは `%d' 変換のアルファベット文字などの無効な入力文字が原因です。ファイルの終わりなどの変換が発生する前に入力エラーが発生した場合、値 EOF が返されます。変換の開始後にエラーまたはファイルの終わりが発生した場合、正常に完了した変換の数が返されます。
于 2013-04-08T08:24:10.073 に答える