質問: 0; i < n; ++i) { scanf("%s %s",test,sample); `` コンソールにおける入力は例を挙げると以下になります。 ``` あいうえお あ かきくこけこ か さしすせそ さ /*これをそのままエンターで入力します*/ ``` すると デバッカーを見る限り、「かきくけこ か」までは勝手にループしてtestとsampleに入力されますが、(必然的にtestとsampleは上書きされる) 最後の「さしすせそ さ」は再度コンソールにおいてエンターを押さないと入力されません。 この場合「あいうえお あ」と「かきくけこ こ」は個別にエンターを押しておらず 「あいうえお あ かきくこけこ か さしすせそ さ」 まとめてエンターを押しただけです。 入力されるとすればエンターを押した 「 あいうえお あ かきくこけこ か さしすせそ さ 」 がまとめてscanfに入力され、エラーが出ると思うのですが、なぜかscanfは「あいうえお あ」と「かきくけこ こ」を別に入力を受け取ります。 これが成り立つならば「さしすせそ さ」も再度エンターを押さずにそのまま入力を受け取ってくれると思うのですが、なぜ再度エンターを押さなければならないのでしょうか?
回答: scanfは非常に動きが分かりずらく、初心者では理解するのが大変です。 http://wisdom.sakura.ne.jp/programming/cpp/cpp2.html c++のタグが付いているので、こちらのURLに書かれている、cout を使うのをおススメします。