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
值。
我正在尝试使用带有 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
值。