Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 23.10.2011, 01:36   #1
rus_phantom
Пользователь
 
Регистрация: 02.05.2011
Сообщений: 16
По умолчанию Побайтовое чтение файла

Хотел распаковать файл от игры. Файл начинает распаковываться, но в середине процесса у меня позиция чтения резко увеличивается на 3000 из-за чего часть данных теряется

Код:
#include <stdio.h>
#include <string.h>
#include <stdlib.h>


int main()
{
    FILE* s;
    FILE* log;
    s = fopen("section2.bin","r");
    log = fopen("log.txt","w");
    if (s!=NULL){
        printf("OPEN\n");
    } else {
        printf("NOT_OPEN");
    }
    unsigned int count;
    float x,y,z;
    unsigned int lv;
    float distance;

    fread( &count, 4, 1, s );
    for (int i=0;i<50;i++) {

        fprintf(log,"1READING POS BEFORE %d\n",ftell(s));
        if ((i%32)==0) fprintf(log,"\n\n\n\n\n");
        fread( &x, 4, 1, s );
        fprintf(log,"2READING POS BEFORE %d\n",ftell(s));
        fread( &y, 4, 1, s );
        fprintf(log,"3READING POS BEFORE %d\n",ftell(s));
        fread( &z, 4, 1, s );
        fprintf(log,"4READING POS BEFORE %d\n",ftell(s));
        fread( &lv, 4, 1, s );
        fprintf(log,"5READING POS BEFORE %d\n",ftell(s));
        fread( &distance, 4, 1, s );
        fprintf(log,"6READING POS AFTER %d\n",ftell(s));

        fprintf(log,"offset=0x%X\n",i);
        fprintf(log,"vector_____x=%f\n",x);
        fprintf(log,"y=%f\n",y);
        fprintf(log,"z=%f\n",z);
        fprintf(log,"lv=%d\n",lv);
        fprintf(log,"distance=%f\n",distance);
        x=0;
        y=0;
        z=0;
        lv=0;
    }
    printf("DONE\n");
    fclose(s);
    fclose(log);
    getchar();
    return 1;

}
Структура у файла такая:
сначала идет 4byte -количество групп по 20 байт каждая, описанных ниже

Дальше идут группы по 20 байтов в каждом, в которых находятся числа в следующем порядке:
float float float unsigned int float

Файл прикрепил ниже. Ошибка происходит при попытке считывания 14-ой группы при считывании последнего float числа
Вложения
Тип файла: zip section2.zip (400.7 Кб, 8 просмотров)
rus_phantom вне форума Ответить с цитированием
Старый 23.10.2011, 11:22   #2
Somebody
Участник клуба
 
Регистрация: 08.10.2007
Сообщений: 1,185
По умолчанию

Код:
fopen("section2.bin","r");
↓↓↓↓↓↓
Код:
fopen("section2.bin","rb");
Somebody вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
чтение из файла Niksan Общие вопросы C/C++ 3 02.05.2011 18:14
Побайтовое чтение с редактированием DedBoroda Общие вопросы Delphi 1 22.10.2010 02:48
Чтение из файла! balamut Общие вопросы C/C++ 8 17.05.2010 02:39
чтение из файла dedokk1234 Общие вопросы C/C++ 0 15.06.2009 19:10
Чтение из файла... Bill Gates Общие вопросы Delphi 3 22.03.2008 22:13