- 834 名前:824 mailto:824をたのむ…… [2006/07/14(金) 17:19:31 ]
- >>833
scanf("%c",&i);の時、1000とか入力すると、%cの分の1をscanf("%c",&i);で取り込み、残りの000は次のscanf("%s",st); に勝手に入力されてしまう。 8進数だから、7、8、9なんかは入力できない。 すると179は17まで8進数と見なされ、残りの9は型が違うものと認識される。 17dとか入力しても同様。 型が違うものと認識されたものは、次のscanfに勝手に入力されてしまう。 標準入力ストリームがバッファリングの構造を取るから。 型が違うもの、と認識されたものは、一度バッファに戻ってから、次のscanfに入力されてしまう。 環境によっては、scanf("%d",i);のところで、a、とか入力すると、 型が違うものだからバッファに戻す→バッファからaがscanfに入力される というルーチンを延々と繰り返してしまう。 この繰り返しが起こらない環境ならば、型が違うものでも強制的な変換が行われ、scanfに取り込まれるということ。
|

|