ホームページ  >  記事  >  バックエンド開発  >  新しい質問: ftell() の解決策がわかりません

新しい質問: ftell() の解決策がわかりません

WBOY
WBOYオリジナル
2016-06-13 13:24:331093ブラウズ

初心者の質問: 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 になります。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。