アプリ版:「スタンプのみでお礼する」機能のリリースについて

 UNIX上の/home/info/user/log内にある*.logファイルを一つずつfopenで開いて一行ずつ読み込み、用が済んだらfcloseで閉じていくようなプログラムを作りたいのですが、どうすれば良いのでしょうか?
 最初はls -l /home/info/user/log/*.logをリダイレクトしたファイルリストを作り、それを読み込ませてfopen……という流れを考えていたのですが、対象となるファイルが万単位に登る為実現不可でした。
 一行ずつ読み込ませる部分は既に出来ているので、fopen/fcloseに絞ってお教え下さい。

A 回答 (3件)

お書きの方法でも別に万のファイルがあっても実現可能だと思いますが、リダイレクト先の一時ファイルを置く場所が足りないのでしょうか?



普通は、opendirして、
(readdirでディレクトリの内容を読み出してファイル名を調べfopen→処理→fclose) を繰り返します。
    • good
    • 1
この回答へのお礼

 lsリダイレクト実行を大量のファイルがあるディレクトリに対して行うとCPUかメモリを圧迫してしまうようで、いつまでたっても帰ってきませんでした。
 opendir→readdirでで出来ました。ありがとうございます。

お礼日時:2006/12/20 23:50

ANo.1さんのおっしゃっている通りになるとおもいますよ。


ANo.1さんの回答には、参考URLが無かったので、載せておきます。
notnotさん、ごめんなさい。

参考URL:http://www.ncad.co.jp/~komata/c-kouza14.htm
    • good
    • 0
この回答へのお礼

 確かにこんな形になりました。
 教えていただいたやり方が正しかったと確証を持てました。ありがとうございます。

お礼日時:2006/12/21 00:13

fopen したいファイルの名前は系統立っていますか?



ファイル名が
file001,file002...file10000 のようにシーケンシャル
なネーミングになっているもしくはそのような
ネーミングにすることが可能ならば
カウンタを文字として扱い、fopen→処理→fcloseのループ内で
ファイル名を作成してしまうという方法がありますよ。

そうすればファイル名一覧をテーブルとして持ったりしなくても
よいのでプログラムは簡潔になります。
    • good
    • 0
この回答へのお礼

 使われていない番号などがあったりする為規則性はあってなきが如しでした。
 ですがその発想は盲点でした。ありがとうございます

お礼日時:2006/12/21 00:08

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています