fgetc() 函数读取整个文件

fgetc() function to read the whole file

我正在尝试使用带有 do..while 循环的 fgetc() 读取整个文件。我知道不推荐这样做,但它应该有效。 counter.dat 的内容是 我不知道要做什么 但我得到的输出是 0。为什么是 0?

<?php
 $f = "counter.dat";
 if (!($fp = fopen($f,"r"))) {
      die("Can Not Open $f");
 }
 do {
  $one_char = fgetc($fp);
  $counter = $one_char;
  $counter .= $one_char;
 } while($one_char);
 fclose($fp);
 $counter = (int) $counter;
 echo $counter;
?>

你每次通过循环覆盖 $counter,然后再附加到它。在最后一次迭代中,$one_char 将是 FALSE,因此您要设置 $counter = FALSE;,并将其转换为整数 returns 0.

您还需要在开头将$counter初始化为空字符串。

由于文件不包含整数,因此您不应使用 (int) $counter。只需打印 $counter.

的值

这样做:

$counter = "";
while ($one_char = fgetc($fp)) {
    $counter .= $one_char;
}
echo $counter;

这会在到达 EOF 时立即退出循环,它不会尝试使用上次迭代的 FALSE 值。