Модераторы: feodorv, GremlinProg, xvr, Fixin
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Чтение файла с конца 
V
    Опции темы
Elyad
Дата 13.10.2006, 12:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 56
Регистрация: 2.8.2006

Репутация: нет
Всего: нет



Подскажите, как начать читать фаил с конца? Мне надо в файле найти последнее совпадение с заданным шаблоном. smile 
PM MAIL   Вверх
_hunter
Дата 13.10.2006, 12:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 8564
Регистрация: 24.6.2003
Где: Europe::Ukraine:: Kiev

Репутация: 13
Всего: 98



SetFilePointer и читай дальше...


--------------------
Tempora mutantur, et nos mutamur in illis...
PM ICQ   Вверх
Elyad
Дата 13.10.2006, 12:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 56
Регистрация: 2.8.2006

Репутация: нет
Всего: нет



Я пишу программу под Unix. А такой функции там нет.
PM MAIL   Вверх
_hunter
Дата 13.10.2006, 13:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 8564
Регистрация: 24.6.2003
Где: Europe::Ukraine:: Kiev

Репутация: 13
Всего: 98



Цитата(Elyad @  13.10.2006,  12:48 Найти цитируемый пост)
Я пишу программу под Unix

и откуда это известно (из первого поста)?

тогда используй seekg istream' а



--------------------
Tempora mutantur, et nos mutamur in illis...
PM ICQ   Вверх
Romikgy
Дата 13.10.2006, 14:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7326
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

Репутация: 7
Всего: 146



Цитата(Elyad @  13.10.2006,  11:48 Найти цитируемый пост)
Я пишу программу под Unix

 smile а что это делает в винапи?


--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
Elyad
Дата 13.10.2006, 14:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 56
Регистрация: 2.8.2006

Репутация: нет
Всего: нет



Так же системное программирование!!!
PM MAIL   Вверх
Romikgy
Дата 13.10.2006, 15:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7326
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

Репутация: 7
Всего: 146



Цитата(Elyad @  13.10.2006,  13:41 Найти цитируемый пост)
Так же системное программирование!!! 

но не юникс!!!! посмотри по разделам , там есть для юникса!


--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
neosapient
Дата 13.10.2006, 16:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 672
Регистрация: 16.8.2006

Репутация: 3
Всего: 4



Я гдето слышал, что для работы с файлами под консоль в win* и *nix системах используют функции с идентичными именами. Надеюсь меня поправят, если я не прав.  smile 
В данном случае советую посмотреть функцию (прототип для консоли под винду):
int fseek(FILE *fptr, long numbytes, int origin);

здесь 
fptr - указатель на соответствующий файл;
numbytes - кол-во байт от точки отсчета для установки текущей позиции указателя файла;
origin - один из макросов, определенных в STDIO.H:

Макрос - Значение - Точка отсчета
SEEK_SET - 0 - Начало файла
SEEK_CUR - 1 - Текущая позиция
SEEK_END - 2 - Конец файла

Также для работы с файлами подойдут (STDIO.H):
fopen - открыть файл
fclose - закрыть файл
putc - записать символ в поток
getc - прочитать символ из потока
и т.д.

Вот еще нашел (IO.H):
read - читает буфер данных
write - пишет в буфер данных
open - открыть файл
close - закрыть файл
lseek - поиск определенного байта в файле
unlink - уничтожает файл
PM MAIL   Вверх
Romikgy
Дата 13.10.2006, 23:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7326
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

Репутация: 7
Всего: 146



Цитата(neosapient @  13.10.2006,  15:59 Найти цитируемый пост)
Я гдето слышал, что для работы с файлами под консоль в win* и *nix системах используют функции с идентичными именами. Надеюсь меня поправят, если я не прав.

это стандарт си имхо
но в нем нету 
Цитата(Elyad @  13.10.2006,  11:22 Найти цитируемый пост)
читать фаил с конца

изголятся надо 
Цитата(neosapient @  13.10.2006,  15:59 Найти цитируемый пост)
unlink - уничтожает файл

кса (никогда ей не пользовался) но это именно юниксовая команда, в винде такой нет, хотя в си она реализована
Так что вызовы могут быть одинаковы, а вот тонкости реализации той или другой ф_ции надо спрашивать под что пишешь!
Цитата(neosapient @  13.10.2006,  15:59 Найти цитируемый пост)
В данном случае советую посмотреть функцию (прототип для консоли под винду):

хошь я те покажу как тоже работает под гуи виндов?


--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
neosapient
Дата 14.10.2006, 08:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 672
Регистрация: 16.8.2006

Репутация: 3
Всего: 4



Уважаемый, Romikgy.
Не понял, как в анекдоте
Цитата

Девушка, вы жалуетесь или хвастаетесь

Мои слова одобрены или нет?
Я лишь хотел сказать, что есть функции которые сделаны под консоль.
Так эти функции есть лишь обложки скажем над той же CreateFile (DeleteFile и т.п.) под винду.
Я не знаю соответствующие функции под юникс, но предполагаю, что "консольные обложки" могут сработать.

Уважаемый, Elyad.
Хотел добавить, что функции fseek и lseek лишь указывают позицию, откуда считывать. Но считывание происходить в сторону конца файла (не знаю как по юникс, а под винду только от начала к концу). По этому для считывания с конца файла рекомендую установить указатель на конец файла и в цикле последовательно {считывать по одному байту, а затем смещать указатель на один байт к началу}.
Второй вариант, в цикле идя от начала к концу
пока не кончиться файл{
найти первое вхождение от текущей позиции
если не нашел, 
                      то предшествующая позиция была ответом
                       выход из цикла
иначе
                      запомнить позицию
                      установить указатель сразу после найденой фразы
}

А вообще, есть ветка форума под юникс, обратись туда...
PM MAIL   Вверх
Romikgy
Дата 14.10.2006, 10:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7326
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

Репутация: 7
Всего: 146



Цитата(neosapient @  14.10.2006,  07:40 Найти цитируемый пост)
Уважаемый

как культурно smile

Цитата(neosapient @  14.10.2006,  07:40 Найти цитируемый пост)
Я лишь хотел сказать, что есть функции которые сделаны под консоль.

кто те сказал что эти ф_ции только для консоли?
Цитата(neosapient @  14.10.2006,  07:40 Найти цитируемый пост)
считывать по одному байту, а затем смещать указатель на один байт к началу

и сколько будет так проходить файл хотя бы в 10 метров smile
Цитата(neosapient @  14.10.2006,  07:40 Найти цитируемый пост)
Мои слова одобрены или нет?


Цитата(Romikgy @  13.10.2006,  22:02 Найти цитируемый пост)
это стандарт си имхо

какое одобрение те еще надо ?


--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
neosapient
Дата 14.10.2006, 14:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 672
Регистрация: 16.8.2006

Репутация: 3
Всего: 4



Цитата

кто те сказал что эти ф_ции только для консоли?

Под винду в пользовательском режиме эти функции прекрасно работают.
Главное подключить STDIO.H и прекрасно работает под консоль и просто WinAPI приложения.
А на консоль ссылаюсь так как не знаю заголовочных файлов под юникс.  smile 

Цитата

и сколько будет так проходить файл хотя бы в 10 метров 

Вот по этому я привел другой вариант алгоритма
Цитата

Второй вариант, в цикле идя от начала к концу
пока не кончиться файл{
найти первое вхождение от текущей позиции
если не нашел, 
                      то предшествующая позиция была ответом
                       выход из цикла
иначе
                      запомнить позицию
                      установить указатель сразу после найденой фразы
}

PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Системное программирование и WinAPI"
Fixin
GremlinProg
xvr
feodorv
  • Большое количество информации и примеров с использованием функций WinAPI можно найти в MSDN
  • Описание сообщений, уведомлений и примеров с использованием компонент WinAPI (BUTTON, EDIT, STATIC, и т.п.), можно найти в MSDN Control Library
  • Непосредственно, перед созданием новой темы, проверьте заголовок и удостоверьтесь, что он отражает суть обсуждения.
  • После заполнения поля "Название темы", обратите внимание на наличие и содержание панели "А здесь смотрели?", возможно Ваш вопрос уже был решен.
  • Приводите часть кода, в которой предположительно находится проблема или ошибка.
  • Если указываете код, пользуйтесь тегами [code][/code], или их кнопочными аналогами.
  • Если вопрос решен, воспользуйтесь соответствующей ссылкой, расположенной напротив названия темы.
  • Один топик - один вопрос!
  • Перед тем как создать тему - прочтите это .

На данный раздел распространяются Правила форума и Правила раздела С++:Общие вопросы .


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Chipset, Step, Fixin, GremlinProg, xvr. feodorv.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Системное программирование и WinAPI | Следующая тема »


 




[ Время генерации скрипта: 0.0506 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.