изменение данных в бинарнике С++
Пользователи, просматривающие топик: 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);
|
|
|
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
|
|
|
RE: изменение данных в бинарнике С++ - 2008-04-14 16:12:18.110000
|
|
|
DarkMag
Сообщений: 49
Оценки: 0
Присоединился: 2008-04-07 20:16:31.523333
|
Согласен но на практике уменя все записывает в конец файла. В общем если ьыл уменя в первых 1045байтах Билли Гетс , а после записи стал Вася Пупкин
|
|
|
RE: изменение данных в бинарнике С++ - 2008-04-14 16:51:18.296666
|
|
|
DarkMag
Сообщений: 49
Оценки: 0
Присоединился: 2008-04-07 20:16:31.523333
|
То есть у меня в файле n-e число записей, а повторная запись производиться, почему-то, не в указаную позицию(0-ю в примере), а в конец файла.
|
|
|
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'.
|
|
|
RE: изменение данных в бинарнике С++ - 2008-04-14 17:20:54.726666
|
|
|
DarkMag
Сообщений: 49
Оценки: 0
Присоединился: 2008-04-07 20:16:31.523333
|
Ура!!! Заработало!!!:D Сенкс.
|
|
|
|
|