• 締切済み

fopenのモードによりfgetsするレングスが異なるのは何故ですか?

ファイルを読み、そのレングスをチェックしています。 $file = @fopen($_FILES['fl']['tmp_name'],"r"); if ($file) {  while (!feof($file)) {   $rec = fgets($file);   print("レングス".strlen($rec)."<br>");   (後略) 例えば1500バイトの固定長ファイルを読んだ場合、 fopenモード"r"だと以下の通りです。  レングス1502(改行が含まれるので1500+2?)  レングス1502 これをモード"r+"にすると以下のようになります。    レングス1502  レングス1499 両者の差はどこから来ているのでしょうか? ご教示いただけると幸いです。

みんなの回答

  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.1

私の環境では再現しませんね。 単純に短いのですから、中身を確認してみては?

mogmogtae
質問者

お礼

ご回答ありがとうございます。 よくよく調べたところ、モード"r+"の時に、 プログラム内でファイルの内容を破壊するような 処理がありました。 故に、レングスが変わってしまっていたようです。

関連するQ&A