scanfにおける入力の送信は何を持って判断されるのでしょうか?
本や解説書を拝見するとenterキーとありますが、for構文でループさせたscanfを使う場合なぜか途中まで入力されますが、最後のscanfのみ再度enterを押さねば入力されなくなったしまいます。
コードとしては以下のようにあったとして
``
for (i = 0; i < n; ++i) {
scanf("%s %s",test,sample);
``
コンソールにおける入力は例を挙げると以下になります。
あいうえお あ かきくこけこ か さしすせそ さ /*これをそのままエンターで入力します*/
すると
デバッカーを見る限り、「かきくけこ か」までは勝手にループしてtestとsampleに入力されますが、(必然的にtestとsampleは上書きされる)
最後の「さしすせそ さ」は再度コンソールにおいてエンターを押さないと入力されません。
この場合「あいうえお あ」と「かきくけこ こ」は個別にエンターを押しておらず
「あいうえお あ
かきくこけこ か
さしすせそ さ」
まとめてエンターを押しただけです。
入力されるとすればエンターを押した
「
あいうえお あ
かきくこけこ か
さしすせそ さ
」
がまとめてscanfに入力され、エラーが出ると思うのですが、なぜかscanfは「あいうえお あ」と「かきくけこ こ」を別に入力を受け取ります。
これが成り立つならば「さしすせそ さ」も再度エンターを押さずにそのまま入力を受け取ってくれると思うのですが、なぜ再度エンターを押さなければならないのでしょうか?
回答4件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2019/01/09 04:51
2019/01/09 05:05