Форум программистов, компьютерный форум CyberForum.ru

Нужна подсказка в разборе структуры файла - C++

Восстановить пароль Регистрация
 
NapalmRain
 Аватар для NapalmRain
36 / 36 / 2
Регистрация: 18.05.2010
Сообщений: 624
26.11.2012, 16:49     Нужна подсказка в разборе структуры файла #1
Доброго всем времени суток!
Имеется некий бинарный файл. Нужно его прочитать, вытащить из него всё необходимые значение и, по возможности изменив, записать обратно в том же виде.
Встаёт вопрос, каким методом наиболее эффективно можно разобрать структуру этого файла?

Заранее благодарю за любой совет!
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.11.2012, 16:49     Нужна подсказка в разборе структуры файла
Посмотрите здесь:

Композиция (Нужна подсказка) C++
C++ нужна подсказка
C++ Структуры, С++. Нужна небольшая подсказка
Нужна подсказка в отладке C++
Нужна подсказка с ответами! C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
26.11.2012, 17:30     Нужна подсказка в разборе структуры файла #2
Цитата Сообщение от NapalmRain Посмотреть сообщение
вытащить из него всё необходимые значения
Какие значения нужно вытащить?
NapalmRain
 Аватар для NapalmRain
36 / 36 / 2
Регистрация: 18.05.2010
Сообщений: 624
27.11.2012, 09:08  [ТС]     Нужна подсказка в разборе структуры файла #3
Цитата Сообщение от alsav22 Посмотреть сообщение
Какие значения нужно вытащить?
Это файл для компьютерной игры, в котором находится список заданий. У каждого задания есть некоторые параметры. Какие-то в виде чисел, какие-то просто галочками. Собственно, хочется понять, есть ли какие-то уже проверенные способы разбора структуры, хотя бы что бы понять, где кончается одно значение и начинается другое. Или это нужно делать исключительно методом тыка?
vxg
Модератор
 Аватар для vxg
2669 / 1680 / 158
Регистрация: 13.01.2012
Сообщений: 6,281
27.11.2012, 11:45     Нужна подсказка в разборе структуры файла #4
если есть спецификация формата, то... вопроса наверное не возникло бы
если ее нет, то методом тыка. что-то меняете в игре и отслеживаете где поменялось в файле. когда-то смог таким путем изменить настройки в fallout, но как не бился не смог изменить настройки в RtcW. кроме того файл может шифроваться или содержать контрольную сумму.
NapalmRain
 Аватар для NapalmRain
36 / 36 / 2
Регистрация: 18.05.2010
Сообщений: 624
27.11.2012, 14:15  [ТС]     Нужна подсказка в разборе структуры файла #5
Ясно, спасибо! Буду разбираться. К счастью, файл не зашифрован.
kuli4ok
31 / 31 / 3
Регистрация: 10.10.2012
Сообщений: 88
27.11.2012, 14:35     Нужна подсказка в разборе структуры файла #6
Я вот только вчера для себя консольную игрушку писал. Я делал сохранения статов персонажа в таком виде:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
 154     int save_stat()//сохранение статов персонажа
 155     {
 156         FILE *fp;
 157         if((fp = fopen("/home/kuli4/c++/atom/stat_main_hero.bat", "wb+")) == NULL)
 158         {
 159             printf("ERROR!\nCannot open stat.bat file\n");
 160             return 1;
 161         }
 162         rewind(fp);
 163         fwrite(&heal_all, sizeof(int), 1, fp);
 164         fwrite(&heal_now, sizeof(int), 1, fp);
 165         fwrite(&dmg, sizeof(int), 1, fp);
 166         fwrite(&lvl_arm, sizeof(int), 1, fp);
 167         fwrite(&lvl, sizeof(int), 1, fp);
 168         fwrite(name, (sizeof(char)*20), 1, fp);
 169         fwrite(&exp, sizeof(int), 1, fp);
 170         fwrite(dmg_item, sizeof(char)*20, 1, fp);
 171         fwrite(arm_item, sizeof(char)*20, 1, fp);
 172         fwrite(&value_dmg_item, sizeof(int), 1, fp);
 173         fwrite(&value_arm_item, sizeof(int), 1, fp);
 174         fwrite(&money, sizeof(int), 1, fp);
 175         fclose(fp);
 176         fp = NULL;
 177         return 0;
 178     }
А загрузку в таком:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
 187     int load_stat()//загрузка статов персонажа
 188     {
 189         FILE *fp;
 190         if((fp = fopen("/home/kuli4/c++/atom/stat_main_hero.bat", "rb+")) == NULL)
 191         {
 192             printf("ERROR!\nCannot open stat.bat file\n");
 193             return 1;
 194         }
 195         rewind(fp);
 196         fread(&heal_all, sizeof(int), 1, fp);
 197         fread(&heal_now, sizeof(int), 1, fp);
 198         fread(&dmg, sizeof(int), 1, fp);
 199         fread(&lvl_arm, sizeof(int), 1, fp);
 200         fread(&lvl, sizeof(int), 1, fp);
 201         fread(name, (sizeof(char)*20), 1, fp);
 202         fread(&exp, sizeof(int), 1, fp);
 203         fread(dmg_item, sizeof(char)*20, 1, fp);
 204         fread(arm_item, sizeof(char)*20, 1, fp);
 205         fread(&value_dmg_item, sizeof(int), 1, fp);
 206         fread(&value_arm_item, sizeof(int), 1, fp);
 207         fread(&money, sizeof(int), 1, fp);
 208         fclose(fp);
 209         fp = NULL;
 210         return 0;
 211     }
Может и тебе такой метод подойдет.

p.s. извиниюсь за цифры в строках, просто я в vim пишу, а там у меня нумерация строк включена.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
27.11.2012, 14:52     Нужна подсказка в разборе структуры файла
Еще ссылки по теме:

C++ нужна подсказка
Нужна подсказка C++
While(i<=n) b[i]=a[i] i++. Нужна подсказка( C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
NapalmRain
 Аватар для NapalmRain
36 / 36 / 2
Регистрация: 18.05.2010
Сообщений: 624
27.11.2012, 14:52  [ТС]     Нужна подсказка в разборе структуры файла #7
kuli4ok, Благодарю! Может и такой вариант подойдёт) буду разбираться.
Yandex
Объявления
27.11.2012, 14:52     Нужна подсказка в разборе структуры файла
Ответ Создать тему
Опции темы

Текущее время: 21:19. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru