- 締切済み
fgetsで任意の行のみ読み込める?
fgetsを使うとき普段は while(!feof) を使って最後まで読み込むことしか使っていませんでした。 この度、任意の行を取り込みたいのですが そのような際でもこの関数は使えるでしょうか?
- みんなの回答 (3)
- 専門家の回答
みんなの回答
> fgetsを使うとき普段はwhile(!feof)を使って最後まで読み込むことしか使っていませんでした。 この場合は、file_get_contents を使う方が楽ですよ。 http://jp2.php.net/manual/ja/function.file-get-contents.php > この度、任意の行を取り込みたいのですが 99行目までを読む手間はありますが、出来ます。 if($fp = fopen('input.txt', 'r')){ for($i = 1; $i < 100; $i++){ $dat = fgets($fp, 4096); // 1行読み込み } } echo $dat; // 100行目を出力 100回 fgets を実行する、というシンプルなコードです。 これはfile関数を使っても実装できます。(私ならfile関数を使います) http://jp2.php.net/manual/ja/function.file.php $lines = file('input.txt'); echo $lines[99]; // 100行目を出力
- sakusaker7
- ベストアンサー率62% (800/1280)
#1です。すいませんCと間違えました。
- sakusaker7
- ベストアンサー率62% (800/1280)
たとえば100行目のデータが欲しいとしたら、99行を読み飛ばす必要がありますが、できることはできます。 fgets(buf, size, fp); で、行末の改行を含めて最大size-1バイトバッファに読み込み EOFに達していた場合にはNULLが返りますので、読み飛ばしの 途中でEOFになったことは判定できます。 ただ気をつけなければいけないのは、バッファの サイズよりも長い行にあたった場合、バッファのサイズに収まる 分だけ読み取り、その行の残りは次回の呼び出し時に読み込まれますので そういった行があるのなら手当てする必要があります(バッファを 大きくするとか)。