初心者の質問: ftell()
$fp = fopen('exa', 'r');
$data = fgets($fp, 15) がわかりません);
echo ftell($fp);
fclose($fp);
?>
この例では、出力は次のようになります: 13
15 を 1046 に変更すると、このように比較的大きな数値の場合は 13 も出力されます。
15 を 13 に変更すると、12 が出力されます。
具体的には何が起こっているのでしょうか?
-----解決策---------
まず、「exa」ファイルのこの行のポインタ幅は 13 で、ポインタは 0 から始まるため、15 以上を選択すると、独自の幅を超える限り、最大幅しか出力できません。つまり、13 です。
次に、ポインターは 0 から始まるため、$data = fgets($fp, num);、ポインターは実際には 0 から始まるため、ftell($fp) の値は次のようになります。たとえば、fgets($fp, 5) の場合、ftell($fp) は 4 になります。
つまり、「15 を 13 に変更したら 12 を出力する」と言った場合、13 は最大幅を超えていないため、出力は 13-1 になります。