Re: A problem with fgets()

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Fri, May 30, 2008 at 3:38 AM, Chris <dmagick@xxxxxxxxx> wrote:
> fseek doesn't go to the start of a line, it goes to a particular byte -
> so that's where the problem lies (not with fgets). There's no function
> (that I could see) which would go to the start of the line based on that
> offset (I guess you could fseek to a particular spot then reverse char
> by char until you find a newline - but that'll be rather slow for
> anything that has a long line).
>
>
> You could read the whole thing into an array and do a rand on that:
>
> $cities = file('filename.txt');
>
> // take 1 off from the max number as $cities is a 0 based array
> $number_of_cities = sizeof($cities) - 1;
>
> $city_number = rand(0, $number_of_cities);
> $city = $cities[$city_number];
>
> Though if you have a big file that reads the whole thing into memory etc.
>

I didn't say fseek() goes to the start of a line. I said that fgets()
should read a whole line, no matter where the pointer is at. I've
already managed to get the result I want by using file() as you've
suggested and array_rand(), and the result is very good.

I just need to figure out why when using fgets() with fseek() &
rand(), the script returns partial strings form the city names.

Regards,
Usamah

-- 
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php


[Index of Archives]     [PHP Home]     [Apache Users]     [PHP on Windows]     [Kernel Newbies]     [PHP Install]     [PHP Classes]     [Pear]     [Postgresql]     [Postgresql PHP]     [PHP on Windows]     [PHP Database Programming]     [PHP SOAP]

  Powered by Linux