![]() |
|
Модераторы: Daevaorn |
![]()
|
|
| Гость_Вова |
|
|||
|
Unregistered |
Люди! Помогите!
Может кто-то умный поможет! Мне нужно организовать ратоу с циклическим файлом! То-есть записываю в начало файла запись, затем еще и так далее, пока не запишу, например 20 записей, пишем уже на место первой записи (Понятно, что размер записи одинаковый) С уважением, Владимир |
|||
|
||||
| Fixin |
|
|||
![]() Ёжик ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 1357 Регистрация: 6.1.2004 Репутация: 2 Всего: 18 |
Хм. Мне для примера нужно, так что может напишу.
|
|||
|
||||
| Mayk |
|
|||
![]() ^аВаТаР^ сообщение>> ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2616 Регистрация: 22.5.2005 Где: за границей разум а Репутация: 45 Всего: 134 |
Если я правильно понял, то что-то типа того
Ну или rewind(f); вместо fseek'а. -------------------- Здесь был кролик. Но его убили. Человеки < кроликов, йа считаю. |
|||
|
||||
| Guest |
|
|||
|
Unregistered |
Плиз! Брось этот пример! Или хотя бы скажи, как организовать удаление первой записи и вместо нее записать новую!
|
|||
|
||||
| Guest |
|
|||
|
Unregistered |
А что fwrite(f, sizeof(*rec),1,f); перезаписывает сверху запись? А не сдвигает записи????
Я думал, что получиться так : 21 запись 1 запись 2 запись ...... 20 запись или я не прав? или получиться: 21 запись 2 запись ...... 20 запись ??????? |
|||
|
||||
| Fixin |
|
|||
![]() Ёжик ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 1357 Регистрация: 6.1.2004 Репутация: 2 Всего: 18 |
Тут нужно использовать функцию seek(). Но я рассчитываю на небольшой файл, потому просто буду копировать исходный по записям и заменять нужную запись, потом переименовывать временный файл в исходный.
|
|||
|
||||
| Guest |
|
|||
|
Unregistered |
ЭЭЭЭ, вариант :
Но я рассчитываю на небольшой файл, потому просто буду копировать исходный по записям и заменять нужную запись, потом переименовывать временный файл в исходный. Не подходит! ФАЙЛ большой!!!! |
|||
|
||||
| Fixin |
|
|||
![]() Ёжик ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 1357 Регистрация: 6.1.2004 Репутация: 2 Всего: 18 |
Это сообщение отредактировал(а) Fixin - 11.8.2005, 18:21 |
|||
|
||||
| Mayk |
|
|||
![]() ^аВаТаР^ сообщение>> ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2616 Регистрация: 22.5.2005 Где: за границей разум а Репутация: 45 Всего: 134 |
Ну да, перезаписывает. -------------------- Здесь был кролик. Но его убили. Человеки < кроликов, йа считаю. |
|||
|
||||
| sergejzr |
|
|||
![]() Un salsero Профиль Группа: Админ Сообщений: 13285 Регистрация: 10.2.2004 Где: Германия г .Ганновер Репутация: 19 Всего: 360 |
Mayk нормальный вариант предложил. перезапись части конечно лучше чем всего файла
|
|||
|
||||
| Fixin |
|
|||
![]() Ёжик ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 1357 Регистрация: 6.1.2004 Репутация: 2 Всего: 18 |
Думаю, имелось ввиду это:
Это сообщение отредактировал(а) Fixin - 11.8.2005, 18:27 |
|||
|
||||
| Guest |
|
|||
|
Unregistered |
Что-то не работает
test = fopen ("test","ab"); s.c[0]='a'; s.c[1]='a'; s.c[2]='a'; rewind(test); fwrite(&s, sizeof(s), 1, test); fclose(test); Пишит в конец файла!!! |
|||
|
||||
| comcon1 |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 838 Регистрация: 11.6.2005 Где: Москва ДАС-МГУ Репутация: 12 Всего: 17 |
Поиграй вторым параметром. Тебе скорее w+, чем а. |
|||
|
||||
| Guest |
|
|||
|
Unregistered |
test = fopen ("test","w+");
Затирает все!!! И пошет сначала |
|||
|
||||
| sergejzr |
|
|||
![]() Un salsero Профиль Группа: Админ Сообщений: 13285 Регистрация: 10.2.2004 Где: Германия г .Ганновер Репутация: 19 Всего: 360 |
пользуйся fseek им точно можно по всему файлу ходить как вздумается.
|
|||
|
||||
| Guest |
|
|||
|
Unregistered |
fseek и rewind работают!!!
я проверял : rewind(test); fscanf(test,"%c",&first); fwrite(&s, sizeof(s), 1, test); но, вот вставляет в конец |
|||
|
||||
| Mayk |
|
|||
![]() ^аВаТаР^ сообщение>> ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2616 Регистрация: 22.5.2005 Где: за границей разум а Репутация: 45 Всего: 134 |
RTFMим:
-------------------- Здесь был кролик. Но его убили. Человеки < кроликов, йа считаю. |
|||
|
||||
| Guest |
|
|||
|
Unregistered |
Все! Всем спасибо! Все работает! "r+b"
|
|||
|
||||
![]()
|
| Правила форума "С++:Общие вопросы" | |
|
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |