[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: fgets и число символов строки.
LRCenter
Почему после того как получаешь fgets-ом нужное количество символов строки в цикле, он в следующий проход цикла не переходит на новую строку, а захватывает символы после уже полученных в этой-же строке?



$handle = fopen("/tmp/inputfile.txt", "r");
while (!feof($handle)) {
$buffer = fgets($handle, 4096);
echo $buffer;
}
fclose($handle);


Это нормально? Как можно сделать чтоб он захватывал только по разу в каждой строке?
Только получив всю строку, а затем из нее получить нужную подстроку strstr-ом? Есть-ли способ рациональнее?



Спустя 21 минута, 40 секунд (2.03.2011 - 12:03) Snus написал(а):
LRCenter
Покажи пример, пока я тебя не оч. понял. smile.gif

Спустя 16 минут, 8 секунд (2.03.2011 - 12:19) linker написал(а):
fgets($handle, 4096) - читает либо 4096 символов, либо пока не встретит символ перевода на новую строку. Поэтому, если при прочтении 4096-ти символов \n не встретился, то следующий fgets() продолжит читать с того места, где остановилось предыдущее fgets().

Спустя 1 час, 13 минут, 47 секунд (2.03.2011 - 13:33) LRCenter написал(а):
Это я понял, если мне только первые 20 символов строки нужны, например, получил их, а как потом можно пропустить оставшуюся часть строки и перейти к следующей?

Наверное у fgets нет такой штатной возможности.

Т.е. сначала получать всю строку, и уже из нее выделять нужную подстроку(первых 20 символов), только так?

Спустя 20 часов, 17 минут, 27 секунд (3.03.2011 - 09:50) linker написал(а):
Лучше да. Можно конечно сначала считать первые 20 символов, потом сразу же считать до конца строки оставшиеся, но это фигня полная.

Спустя 2 часа, 17 минут, 34 секунды (3.03.2011 - 12:08) LRCenter написал(а):
linker
Понял. Я тоже так думаю. Спасибо.


_____________
Меньше кода - меньше багов ©
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.