ページ 11

至急

Posted: 2007年12月18日(火) 14:59
by しゅう
課題4
キーボードからファイル名を読み込み、そのファイルの中の行数(改行文字の個数)をカウントして画面に表示するプログラムを作成したいんですけど、よくわからないのでプログラム考えてもらえますか?

あとファイルを読み込むってどーゆうことですか?
そのファイルに何を書き込めばいいのですか?

お願いします。

Re:至急

Posted: 2007年12月18日(火) 15:13
by バグ
①ファイルをオープンする
②1文字ずつ文字を読み込む
③読み込んだ文字が改行文字だったら、カウント用の変数をインクリメントする
④ファイルの終端だったら、カウントを画面に表示する。そうでなければ②に戻る
⑤ファイルをクローズする

最初の質問のプログラムの流れはこんな感じです。
ファイルを読み込むとは、ファイルの中に書かれているデータを取り出すという意味です。
今回は改行文字の個数をカウントするだけですから、ファイルへ書き込む必要はありません。

質問は以上ですね?頑張って下さい(^-^)

Re:至急

Posted: 2007年12月18日(火) 15:14
by Lbfuvab
ファイル読み書きは
FILE型のポインタを使います。(猫Cでも見てください
行数はあなた自身が言われたように改行文字の個数をカウントして下さい。

Re:至急

Posted: 2007年12月18日(火) 15:15
by Lbfuvab
かぶってしまいすいませんでした。

Re:至急

Posted: 2007年12月18日(火) 15:22
by しゅう
カキありがとうございます。
できたら簡単なプログラム考えてもらえると助かります。><

Re:至急

Posted: 2007年12月18日(火) 15:25
by バグ
簡単なプログラムとは何ですか?具体的に何が分かりませんか?
全く分からないというのは無しでお願いします。

Re:至急

Posted: 2007年12月18日(火) 15:27
by しゅう
ある程度参考書を読んでわかったのですが、行数をカウントするにはどのようなプログラムになるのかがわかりません。

Re:至急

Posted: 2007年12月18日(火) 15:32
by バグ
printf関数は分かりますよね?
この関数で改行をさせたい時に何を使うかは分かりますか?

ファイルから読み込んだ文字がその改行文字であるかどうかをif文を使って判断して、改行文字ならばカウントを1つ増やせばいいのです。

後は、この説明をC言語に書き換えるだけですよ♪(^-^)

Re:至急

Posted: 2007年12月18日(火) 15:54
by しゅう
ありがとうございます。やってみます。

Re:至急

Posted: 2007年12月18日(火) 15:57
by やそ
あとはデータの構造次第でしょうか?
1行(1レコード)の最大文字数は(可変?固定?)
データ内にスペースは存在するか?
レコードの終端文字は復改(CRLF)?
ファイルの終端は?

一文字づつ読み込むのもよし、1行いっぺんに読むのもよし。
1レコードの区切り文字が見つかったらカウントすれば出来るはずです。

標準入出力関数を良く調べてみましょう。
きっとやりたいことが実現できそうな関数があるはずです。

Re:至急

Posted: 2007年12月18日(火) 16:16
by box
> あとはデータの構造次第でしょうか?
> 1行(1レコード)の最大文字数は(可変?固定?)
> データ内にスペースは存在するか?

取り扱うファイルはおそらくテキストで、
単に改行文字の数を勘定すればよいだけですから、
ファイルの中身には全く依存しないです。

各行の何バイト目に改行文字を含んでいても、
データの中に空白があってもなくても、
今回のプログラムの仕様には影響しません。

Re:至急

Posted: 2007年12月18日(火) 17:02
by やそ
回答者はみんな分かっていると思います。
が、やりとりを拝見するとしゅうさんはファイルを読み込む為の関数を理解していないのではないかと思います。
バグさんが提示した
①ファイルをオープンする
②1文字ずつ文字を読み込む
③読み込んだ文字が改行文字だったら、カウント用の変数をインクリメントする
④ファイルの終端だったら、カウントを画面に表示する。そうでなければ②に戻る
⑤ファイルをクローズする

をC言語でイメージできていないのではないでしょうか?
お勉強のために、いろんな入出力関数があることを知ってもらい、その上で今回の要件にマッチする関数が見つけられれば良いなと思い、書かせていただいた次第です。
いろんな関数を試してガッテンしてちょうだい^^

添付されていたPDFファイルはあまり役に立ってないねぇ^^;

Re:至急

Posted: 2007年12月18日(火) 17:14
by バグ
>>添付されていたPDFファイルはあまり役に立ってないねぇ^^;

これは私も思いました。『テキストってどこ?』と思わず探してしまいました(苦笑)

Re:至急

Posted: 2007年12月18日(火) 19:05
by chip
fopenとかfclose,fscanfあたりを中心にあれこれ調べればいいですよ。

ネット上にいくらでも解説サイトがありますので、参考書がややこしそうであれば、
解説サイトをいくつか回って調べるといいと思います。

はっきりいって、サンプルプログラムを示すほどの課題ではありません。
①ファイル開いて、②読み込んで、③行数をカウントする
これだけです。