- ベストアンサー
getcによる空白文字カウントでの問題
- Windows98、BCC5.5及び、MinGWでコンパイルして実行する場合、/*注*/の1行をコメントアウトしますとその下のcountが画面に表示されません。
- この問題は理解できないため、悩んでいます。
- この問題についてご教授いただける方はいらっしゃいますか。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
getcだけではなくて、ストリーム入出力の問題のようです。昔ディスプレイがなかった時代にラインプリンタに結果を出力していましたが、その時代のなごりだと聞いたことがあります。プリンタの印刷開始の合図として改行コード(0x0a)を送っていたらしいです。 以前プログラマの仕事をしていたときに、先輩のプログラマが、 printf("\nメッセージ"); という書き方をしていたので、聞いてみたところこのような現象を回避するためだと説明されたことがあります。 前回の回答でBUGと書きましたが、BUGというより古い仕様というのが正しいのかもしれません。
その他の回答 (2)
- drmoreau
- ベストアンサー率41% (33/79)
失礼しました。Windows98を見落としていました。 0x0aを出力しないと、画面出力がうまくいかないようです。 はっきりしたことはわかりませんが、ストリーム入出力のBUGがXPで修正されたのではないですか。
お礼
やはり98では同じような現象が起こることを知りやっとワンス テップを通過できました。ありがとうございます。 getcの中身は知らないのですが、単純に一文字入力と考えてい ましたが、結構デリケートな問題があるようですね。getcにEOF 検出をさせること自体がひょっとして使い方をあやまっているの ではないかと思うようになりました。 どうもありがとうございました。
- drmoreau
- ベストアンサー率41% (33/79)
特別間違いはありません。 Borland C コマンドライン版&DOS窓では問題なく動いています。
お礼
フォローありがとうございます。コマンドラインからのコンパイル実行も IDEツールからの実行も変わりなく、Windows98での結果はすべてだめでし た。 ただいろいろと考えた末、ぼんやりと原因が分かってきたような気もし ます。ひょっとしますとgetc 関数の基本的な動作について大きな誤解を していたかもしれません。 それで問題なく動いています、といいますのはWindows98ですね。 XPやLinuxで問題なく動くのは確認していますので、、、。
お礼
ストリームの問題なのですね。ぼんやりとその辺のことを感じて いましたが、ご経験談をお聞きしましてはっきりとしました。 今回の件ではいろいろと勉強させていただき感謝しています。 どうもありがとうございました。