none
scanf_sを使用すると RRS feed

  • 質問

  • int main()
    {
    	int a, b, c, d, e, f, g;
    	/*計算値の入力*/
    	printf("1つ目の値を入力>>");
    	scanf_s("%d", &a);
    	printf("2つ目の値を入力>>");
    	scanf_s("%d", &b);
    
    	/*計算結果の表示*/
    	c = a + b;						/*加算*/
    	printf("%d+%d=%d\n", a, b, c);
    	d = a - b;						/*減算*/
    	printf("%d-%d=%d\n", a, b, d);
    	e = a * b;						/*乗算*/
    	printf("%d*%d=%d\n", a, b, e);
    	f = a / b;						/*除算*/
    	printf("%d/%d=%d\n", a, b, f);
    	g = a % b;					/*剰余*/
    	printf("%d%%%d=%d\n", a, b, g);
        return 0;
    }

    このようなプログラムの時に、デバッグすると画面下部がオレンジ色になり、いつもより小さいウィンドウが出ます。

    それはいいのですが、2つ目の値を入力して[Enter]を押すと、出力画面が一瞬で消えてしまいます。

    これはそういう仕様なのでしょうか?

    初心者なのでなぜそうなるかよくわかりません。ご教授お願い致します。


    2016年12月22日 17:47

回答

  • main関数でreturn文が呼ばれるとプログラムが終了してしまいます。画面出力(printf)してからreturnまでに一旦待つようにすれば出力が確認できると思います。方法はいくつかあります。

    • デバッグを行わず最後の出力だけ確認したい場合は、Ctrl+F5(デバッグなし実行)で実行するとプログラムの終了時にプログラムがいったん止まるようです。
    • デバッグ時(F5)に出力を確認するには、最後のreturn文の行でブレークポイントを置くと、そこでプログラムがいったん止まります。→ブレークポイントを置く方法
    • コード中の最後のreturn文の前に「system("pause");」を挿入するとそこでプログラムがいったん止まります。何かキーを入力するとプログラムが続行され、最後のreturn文が呼ばれてプログラムが終了します。system関数を呼ぶためにstdlib.hをインクルードする必要があります。


    まだ、ほかにも方法があると思いますが、参考になれば幸いです。

    #ご質問に現在使用しているVisual Studioのバージョンなどを明記すると、より精度の高い回答が得られる可能性が高まります。

    2016年12月22日 22:52