- ベストアンサー
C言語の質問(for文について) 超初心者です。
for 文を用いて下記のように表示されるプログラムを書いています -100 -99 -98 -97 ・ ・ ・ 0 1 2 ・ ・ ・ 99 100 要するに-100から100まで1ずつ変化させて表示させるプログラムです。このプログラムを下記のように書きましたが、実行すると77から100までしか表示されません。どうしてでしょうか? #include <stdio.h> void main(void) { int i; for(i=-100;i<=100;i++) { printf("%d\n",i); } } for文の解釈として、i=-100は-100から、i<=100は100まで、i++は1づつ足していくという風に考えてますが、間違いなのでしょうか?
- みんなの回答 (6)
- 専門家の回答
質問者が選んだベストアンサー
多分コマンドプロンプトの画面バッファが25行しかないためです。 printfの手前か後に Windows専用の環境ならばSleep(1000); Unix互換環境(CygwinやminGW)ならばsleep(1); を入れて実行してみてください。 1秒ごとに1行出てくるようになります。 全部で約3分強の時間がかかりますが、 これで全部の行がでていることが確認できるでしょう。 または、 Windowsのコマンドプロンプトであれば、コマンドプロンプトのプロパティで画面バッファの高さを300ぐらいに設定すると画面をスクロールさせることができるかもしれません。
その他の回答 (5)
- YUKKER
- ベストアンサー率44% (74/168)
こんにちは。 \nを入れるとforのおかげで全てに改行が繰り返されて表示が切れますが、 \nを抜くと一行に敷き詰まって表示されますから コマンドプロンプトの表示領域に全て表示されます。 プログラムとしてはどちらも正しく動いて問題ありません。 ちなみに「|」はキーボードの右上の\キー+shiftで出ます。
- neKo_deux
- ベストアンサー率44% (5541/12319)
> なぜでしょうか? [スタート]-[プログラム]-[アクセサリ]-[コマンドプロンプト]で、 a[Enter] b[Enter] … と文字を入力(エラーが出る)していくと、だんだん上にスクロールして行き、そのうちaから順番に見えなくなります。 これと同じ事が一瞬にして起こっています。 -- VC++の統合環境の「実行(F5)」なんかから動作させていると、No.2やNo.3さんの方法は使えません。 こっちの説明は面倒なので割愛。 Win2000/XPならば、 [スタート]-[プログラム]-[アクセサリ]-[コマンドプロンプト] 左上のアイコンクリック-[プロパティ] 「~のプロパティ」ダイアログ 「レイアウト」タブ で画面バッファのサイズ、ウィンドウのサイズやフォントの大きさを変更すると、上下スクロールで見れるかも。
- sunasearch
- ベストアンサー率35% (632/1788)
ターミナル上での実行でしたら、 実行ファイル名 > out (リターン) として、ファイルoutの中身を確認してはどうでしょうか?
- neKo_deux
- ベストアンサー率44% (5541/12319)
> 77から100までしか表示されません。 一瞬で表示されて、画面の上にスクロールして消えちゃってるからでは? -5から5とかだと大丈夫なのでは? コマンドプロンプトの表示行数を増やす。 「test.exe | more」などで一時停止。 とか。
お礼
>-5から5とかだと大丈夫なのでは? はい。それくらいなら大丈夫です。 \nをとって改行しないようにしたらちゃんと表示されました。なぜでしょうか? それと「| 」ってどうやって出すんですか?
- shisui77
- ベストアンサー率32% (25/76)
うーん、まったく問題ないですね。 想像ですが、-100から76までは 単に表示が切れて(スクロールして見えない)いる だけではないでしょうか?
お礼
スクロールできません。77が一番上になってる状態で、それより上はスクロールできません。 ちょっと試したのですが、「\n」をぬかして改行しないようにしたらちゃんと-100から100まで表示されるようになりました。 ということはコマンドプロンプトの表示上の問題だったのでしょうか?
お礼
皆様回答ありがとうございます。 ほかのパソコンでやったらできました。 これからもっとC言語勉強していきたいと思います。