![]() |
|
Модераторы: Daevaorn |
![]()
|
|
| B3cK |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 49 Регистрация: 29.5.2005 Где: Минск Репутация: 1 Всего: 1 |
Читаю Шилдта и никак не могу разобраться в функциях fgetspos и fsetpos.
Зачем используют одновременно две функции, если честно я почти не вижу разницы между ними. Что за тип fpos_t ? Просвятите или подскажите где и чего почитать... |
|||
|
||||
| vadims |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 305 Регистрация: 8.6.2005 Репутация: 2 Всего: 17 |
1 функция - получить текущую позицию в файле
2 функция - установить текущую позицию в файле Зачем тебе знать что за тип fpos_t - просто используй его и все Ну уж если очень надо - посмотри описание типа в stdio.h там скорее всего будет unsigned long А что у Шилдта то про эти функции написано ? -------------------- Cpu not found ! Press any key for software emulation. |
|||
|
||||
| Знак |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 135 Регистрация: 29.4.2005 Репутация: -5 Всего: нет |
Что значит зачем тебе это Знать? --------------------
Ищу 2 файлаowl.tchwindows.tch |
|||
|
||||
| chaos |
|
|||
![]() Серийный программист ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2979 Регистрация: 7.7.2004 Где: Екатеринбург Репутация: 6 Всего: 44 |
вот посмотри пример из мсдн, может прояснится:
Example
Output 10 bytes at byte 10: .C: This p 10 bytes at byte 140: { FIL |
|||
|
||||
| B3cK |
|
||||
|
Новичок Профиль Группа: Участник Сообщений: 49 Регистрация: 29.5.2005 Где: Минск Репутация: 1 Всего: 1 |
Дело в том, что функция fgetpos имеет вид: int fgetpos(FILE *stream, fpos_t *position) Получается в объекте на который указывает *position сохраняется текущее значение указателя позиции файла. А объект адресуемый position должен быть типа fpos_t. |
||||
|
|||||
| B3cK |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 49 Регистрация: 29.5.2005 Где: Минск Репутация: 1 Всего: 1 |
А как можно определить сколько вообще позиций в файле?
Не хочется что-то считать циклом до feof'а... |
|||
|
||||
| vadims |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 305 Регистрация: 8.6.2005 Репутация: 2 Всего: 17 |
Да нет здесь проблемы
ну Borland'их иструментах которыми я пользуюсь (от Borlad C++3.1 до C++Builder) fpos_t это long, а вообще-то может зависеть от конкетной среды. Сказал же - посмотри stdio.h, у меня там: typedef long fpos_t; а размер если пользоваться функциями из io.h - там есть getfilelength(...) в stdio.h подобных функций помоему нет, тогда можно oldpos = ftell( file ); // запоминаешь текущую позицию fseek( file, 0, SEEK_END); // позиционируешь указатель на нулевое // смещение от конца файла filesize = ftell( file ); // читаешь его позицию, те размер fseek( file, 0, SEEK_SET); // позиционируешь указатель на старое место Добавлено @ 16:24 В последней строчке ошибся, должно быть: fseek( file, oldpos, SEEK_SET); // позиционируешь указатель на старое место -------------------- Cpu not found ! Press any key for software emulation. |
|||
|
||||
| B3cK |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 49 Регистрация: 29.5.2005 Где: Минск Репутация: 1 Всего: 1 |
А помогите решить такую мини-задачку:
Дано два бинарных файла. Один из них отсортирован по возрастанию, а второй по убыванию. Записать все в третий файл по убыванию без дополнительных массивов. |
|||
|
||||
| En_t_end |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2074 Регистрация: 4.12.2004 Репутация: 1 Всего: 20 |
Модератор: Один вопрос - одна тема. Хватит!
|
|||
|
||||
![]()
|
| Правила форума "С++:Общие вопросы" | |
|
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |