Добро пожаловать! Это — архивная версия форумов на «Хакер.Ru». Она работает в режиме read-only.
 

изменение данных в бинарнике С++

Пользователи, просматривающие топик: none

Зашли как: Guest
Все форумы >> [Компилируемые языки] >> изменение данных в бинарнике С++
Имя
Сообщение << Старые топики   Новые топики >>
изменение данных в бинарнике С++ - 2008-04-14 15:15:41.750000   
DarkMag

Сообщений: 49
Оценки: 0
Присоединился: 2008-04-07 20:16:31.523333
Всем Привет.
У меня возник интересный вопрос.
Я пишу прогу с пользователями и все данные про пользователей записываю в бинарник.
Вопрос: как перезаписать определьнного пользователя (1045 байт)?
Вот код (перезаписывает первого пльзователя):
f = fopen("Account.txt", "a+"); if(!f) { return false; } fseek(f, 0, SEEK_SET); int bufferSize = 255; fwrite(&ids, 4, 1, f); fwrite(A.getName().c_str(), bufferSize,1,f); fwrite(A.getSurname().c_str(), bufferSize,1,f); fwrite(A.getLogin().c_str(), bufferSize,1,f); fwrite(A.getPass().c_str(), bufferSize,1,f); access acc = A.getAccessed(); fwrite(&acc, sizeof(acc),1,f); double a = A.getCash(); fwrite(&a,sizeof(a),1,f); int b = A.getMemory(); fwrite(&b,sizeof(b),1,f); typeAcc t = A.getType(); fwrite(&t,sizeof(t),1,f); fclose(f);
Post #: 1
RE: изменение данных в бинарнике С++ - 2008-04-14 15:58:08.390000   
kolPeeX

Сообщений: 1456
Оценки: 0
Присоединился: 2007-01-25 14:57:57.683333
в чем проблема-то?

если нумерация с 0, то

fseek(f, номер_пользователя*1045, SEEK_SET);

, или

fseek(f, (номер_пользователя-1)*1045, SEEK_SET);

, если нумерация с 1
Post #: 2
RE: изменение данных в бинарнике С++ - 2008-04-14 16:12:18.110000   
DarkMag

Сообщений: 49
Оценки: 0
Присоединился: 2008-04-07 20:16:31.523333
Согласен но на практике уменя все записывает в конец файла.
В общем если ьыл уменя в первых 1045байтах Билли Гетс , а после записи стал Вася Пупкин
Post #: 3
RE: изменение данных в бинарнике С++ - 2008-04-14 16:51:18.296666   
DarkMag

Сообщений: 49
Оценки: 0
Присоединился: 2008-04-07 20:16:31.523333
То есть у меня в файле n-e число записей, а повторная запись производиться, почему-то, не в указаную позицию(0-ю в примере), а в конец файла.
Post #: 4
RE: изменение данных в бинарнике С++ - 2008-04-14 17:15:07.250000   
rgo

Сообщений: 7170
Оценки: 281
Присоединился: 2004-09-25 05:14:25

quote:

ORIGINAL: DarkMag

То есть у меня в файле n-e число записей, а повторная запись производиться, почему-то, не в указаную позицию(0-ю в примере), а в конец файла.

fopen (..., "rb+") при a+ запись всегда в конец идёт. b, же, стоит указать, для совместимости в вендой. А то она понатыкает вместо каждого байтика '\n', пару байтиков '\r\n'.
Post #: 5
RE: изменение данных в бинарнике С++ - 2008-04-14 17:20:54.726666   
DarkMag

Сообщений: 49
Оценки: 0
Присоединился: 2008-04-07 20:16:31.523333
Ура!!! Заработало!!!:D
Сенкс.
Post #: 6
Страниц:  [1]
Все форумы >> [Компилируемые языки] >> изменение данных в бинарнике С++







Связаться:
Вопросы по сайту / xakep@glc.ru

Предупреждение: использование полученных знаний в противозаконных целях преследуется по закону.