PDA

View Full Version : مشکل با دو تابع fseek و ftell



یونس ابراهیمی
شنبه 04 بهمن 1393, 08:22 صبح
سلام دوستان...

من یک فایل متنی رو که داخلش نوشته شده Hello World دارم. کد زیر رو هم نوشتم :


<?php
$file = fopen('c:\test.txt','r');
fseek($file,6);
echo fgets($file,5);
?>


چرا خروجیش به جای world میشه worl ؟؟؟ مگه من نگفتم که 5 کلمه بخونه. اصلا پارامتر دوم توی تابع fseek چطور حساب میشه؟ آیا اینکه نشانگر قبل از حرف H باشه در حالت عادی مکان 1 رو نشون میده ؟یعنی وقتی نشانگر بره وسط H و e میشه 2 و ...؟ اگر اینطور باشه که جوابمو گرفتم در غیر اینصورت ممنون میشم راهنمایی بفرمایید.

سوال دومم هم در مورد ftell ه...
این کد رو ببینید :


<?php
$file = fopen('c:\test.txt','r');

echo fgets($file,12);

echo ftell($file);
?>


چرا خروجی fgets متن Hello Wo ه ؟؟؟؟؟
و در ضمن تابع ftell از کجا و چطور مکان ماوس رو تشخیص میده؟ و آیا این تابه هم وقتی نشانگر قبل از حرف H باشه در حالت عادی مکان 1 رو نشون میده ؟یعنی وقتی نشانگر بره وسط H و e میشه 2 و ...؟

hamedarian2009
شنبه 04 بهمن 1393, 10:01 صبح
سلام. درمورد سوال اولتون اگه به مستندات (http://php.net/manual/en/function.fgets.php)php مراجعه کنید می بینید که پارامتر دوم تابع fgets همیشه یک بایت کمتر از اون اندازه ای رو که بهش میدی رو میخونه پس باید شما 6 رو اونجا قرار بدی
در مورد سوال دوم همین هست وقتی شما تا 12 رو قرار دادی یعنی اشاره گر تا مکان 11 رو میره و هرچی هست رو برات چاپ میکنه و ftell هم در نهایت میگه اشاره گر در مکان 11 قرار داره