Проверка конца файла

Adell

Новичок
Проверка конца файла

Всем привет )

Нужно проверять конец файла на перевод строки (пустую строку).
Если перевод там присутствует, т.е. в конце файла (после всех данных) идёт пустая строка - ничего не делать, а если отсутствует, то его туда необходимо дописать.

Вот код, до которого я дошёл:
PHP:
$f = fopen($name, "r+");

if(fseek($f, 0, SEEK_END)==NULL) {
   if(fseek($f, -1, SEEK_END)!=NULL) {
      fwrite($f, "\r\n");
   }
}

fclose($f);
Вообще, этот код и был сразу написан, только отрабатывает наполовину (ничего не делает, если перевод строки уже существует; а вот добавлять перевод при его отсутствии никак не хочет).

Файл с данными типа:
Первая строка
Вторая строка
Третья строка
Не могу понять, как осуществить задуманное, вроде элементарные вещи ((
 

С.

Продвинутый новичок
А где проверка в коде на наличие конца строки?

-~{}~ 02.10.08 09:41:

только отрабатывает наполовину (ничего не делает, если перевод строки уже существует; а вот добавлять перевод при его отсутствии никак не хочет)
Давай это переведем на нормальный язык: "Этот код вообще ничего не делает"
 

Adell

Новичок
А разве
PHP:
fseek($f, 0, SEEK_END)
не проверка конца файла и, следовательно, конца строки?
Давай это переведем на нормальный язык: "Этот код вообще ничего не делает"
Ну подскажи тогда пожалуйста, что в моём коде не так, и что должно быть на самом деле. Я же только учусь :)
 

Wicked

Новичок
нет, это установка курсора на конец файла.
рекомендую почитать мануал вообще на предмет того, что делают такие функции.

а алгоритм в простом варианте, когда перевод строки это один '\n', мне видится такой:
1) устанавливаем курсор перед последним символом
2) читаем последний символ
3) проверяем, равен ли он '\n'
4) если не равен, то дописываем '\n'
все.
 

Adell

Новичок
Я действительно поторопился с использованием fseek(). Просто очень многое нужно было делать со строками и словами; как следствие - вникание в большое количество функций PHP. Но всё в итоге получилось, кроме fseek(), опять же - поторопился и не обратил внимания, что эта функция только устанавливает курсор на нужную позицию, но не читает :)

С., Wicked
Спасибо за критику и алгоритм.

Рабочий код выглядит так:
PHP:
fseek($f, -1, SEEK_END);
if(fread($f, 1)!="\n") {
   fwrite($f, "\r\n");
}
 
Сверху