概ね方位不定だが多分割と偏っている
スポンサーサイト
--年--月--日 (--) | 編集 |
上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。


C データの終わりとEOF
2006年07月23日 (日) | 編集 |
これまたよく分からないな。いや分からないから勉強しているので分からないこと自体は問題ないのだが、何が分からないのかがよく分からないというのが困る。

だがよくある。

何処がよく分からないのかすらよく分からないので、とりあえず当該事項における概要だけどういうものなのか人に聞いてみることにしても、第一声が「で、何が分からないんだ?」だったりするとその場でミッション失敗みたいなアレだな。ちなみに「いや俺も何がよく分からんのか分からん」とか返したりすると向こうも途方にくれたりする。

あの微妙な間は何かのフラグか何かか。


まあそれは良い。過ぎたことだ。実際フラグも立ってない。多分。
今回は…ええと、scanfとgetcharによるデータの繰り返し入力において、データの終わりをどうやって判定するか、を学ぶんだそうだ。

…というかそもそもscanfとgetcharの繰り返し入力とやらがよく分からんのだが。
やはりよく分からないではないか。
概要っつか焦点すらイマイチよく分かっていないので、入門書を適当に流し読む。


データの終わりの判定

データを入力していく場合、データ数があらかじめ分かっていればfor文を使えばいいのだが、一般にはデータ数は分かっていない場合が多い。まあそんな気もするな。こういう時はデータの終わりに目印を置き、それを終了条件にするそうな。知らんがなそんなもの。で、こういった繰り返しにwhile文が使われるそうな。確かにそうだったな。

んで、データの終わりを何にするのかはプログラマが決めたりするんだが、一般的な方法として^Zを入力したり、ある決めた値を判定条件にしたりするんだそうだ。今までにやったパターンだと決めた値だな。

^ZというのはCTRLとZキーで入力出来るんだが、scanfやgetcharはこれが入力されると-1という値を返すように出来ているんだそうだ。また、これまた一般に、ファイルの終わり(データの終わり)を示す記号定数としてEOF(End of File)が使われ、これもまたstdio.hの中で-1に定義されているんだそうだ。

#define EOF -1

こんな感じで。どんな感じだ。見たこと無いぞこんなの。
そもそもプリ・プロセッサ制御文については11章でやるんだろうが。
とにかく、stdio.hをincludeしておけば、-1って打たなくてもEOFって打てばデータの終わりを検知することが出来るのだとさ。だが-1って打った方が早くねー?

とまあ、以上が概要だ。概要の癖によく分からないが、要するにEOFか^Zと打てばプログラムは終わる、と覚えておけばいいのだろう。いいのか? そんな単純なら苦労しない気もするが。


やはりピンとこないので実際に組んでみてみよう。
scanfで整数データを入力していき、^Zで入力を終わらせてそれまでの合計と平均を求めるプログラムを見てみる。

eoftest.jpg
こんなの

動かしてみる
eoftest2.jpg
こんな感じ

分かったような分からんような。
n=n+1をn++;にしても計算は問題なく行われたようだが…


とりあえずまとめよう。

scanfやgetcharは^Z(CTRL+Zキー)EOFで-1の値を返す
stdio.hをインクルードしていないと駄目だが
scanfで^Zを入力するまで、という条件は!=EOFという式で表現される?
n=n+1とn++は同じ意味?


以上。
って半分以上疑問系かよ。これも例題とかこなしておかないと不安だな。
全く充実した週末になりそうで大変結構なことだ。ゲーム考察する暇もありゃしねー。

コンボ練習の方は欠かすつもりは無いが。
スポンサーサイト

コメント
この記事へのコメント
コメントを投稿する
URL:
Comment:
Pass:
秘密: 管理者にだけ表示を許可する
 
トラックバック
この記事のトラックバックURL
この記事へのトラックバック
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。