• ベストアンサー

【勉強中】文字入出力について【指導】

C言語を独学ではじめたばかりのものです。 以下のプログラムをコンパイル後、実行したのですが、 文字を入力し、enterを押しても反応がありません。 #include <stdio.h> /* 文字カウント */ main() { long nc; nc = 0; while (getchar() != EOF) ++nc; printf("%ld\n", nc); } このプログラムは『プログラミング言語C 第二版 石田晴久 訳』のp22に載っているものです。 Borland社のフリーコンパイラから実行しました。 なにも起こらないので、このプログラミングがどのような意味をもつのかもよくわかりません。 教科書には文字数を数えるためのもの。 と書いてあるのですが、どの文字数を数えているのかもさっぱりです。。。 こんな初心者ですが、なにか助言をいただけるとありがたいです。

質問者が選んだベストアンサー

  • ベストアンサー
  • a-saitoh
  • ベストアンサー率30% (524/1722)
回答No.3

プログラミング言語C は、OSやコンピュータの操作やもう知っているものとして書かれている本です。あなたには高度すぎたのかもしれません。 このプログラムは入力の文字数を数えるものです。あなたが入力ファイルを何も指定しなかったので、キーボードから打ち込まれた文字を数えます。入力の終わりが来るまでは、ひたすら文字数を数えるだけなので見た目何の反応もないのは正常です。 キーボードから入力の終わりを知らせる方法はOSごとに異なります。 DOSやWindowsのコマンドプロンプトではコントロールZリターンです。

goahead1895
質問者

お礼

Ctrl+Zの意味が良く分かりました。 要するにEOFを告げる役割をはたしているのですね。 随分すっきりしました。 ありがとうございます。

すると、全ての回答が全文表示されます。

その他の回答 (2)

回答No.2

おはようございます。 先ず、質問者並びに、BLUEPIXY さんに、上乗せにて失礼(悪意ナシ) コピペ漏れかな?修正等をしておきました。単に、コピペ漏れでしたらゴメンなさいね。 このまま、コピペしない方が良いです。追加するのは、ほんの少しですよ。 しかも、、揚げ足取りぽくなっておりまして(ゴメンなさいね) #1さんが、既に書かれてますが、CTRL+Z と、CTRL+C でも良いのですが(環境依存) CTRL+Z の方が良いでしょう。CTRL+C は、頭の片隅程度にお願いを致します。 但し、CTRL+Z の場合は、その後に、Enter キーが必要でしょう( OS 不明ですが) 然しながら、XP Pro SP2 + BCC(同じヴァージョンのコンパイラかと)にて。 #include <stdio.h> /* 文字カウント */ int main(void) ←私が書き変えました(理由は、将来わかるかと) { (中略)   while (getchar() != EOF) ←ここが、わからないので困られているかと。 (中略) return 0; ←無くても動きますが、コンパイルエラーから警告が出て来ますので、 今後の為、質問者様には、よく理解なされて、おかれて下さいね。 } ご参考になれば。 #焦らずに、途中からペース UP かな。。。

goahead1895
質問者

お礼

ありがとうございます。 不明点がすっきりしました。 少しずつ精進したいとおもいます。

すると、全ての回答が全文表示されます。
  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.1

適当な文字を入力した後 CTRL+Z(コントロールキーを押しながらZキーを押す) を入力して下さい。 あるいは、プログラムがnc.c だったとしたら nc < nc.c などとしてみて下さい。

goahead1895
質問者

お礼

Ctrl+Zで解決できました。 期待通りの数値が帰ってきました。 ありがとうございます。

すると、全ての回答が全文表示されます。

関連するQ&A