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

Прочитать бинарный файл и сделать вычисление - C++

Восстановить пароль Регистрация
 
gauss_gauss
13 / 1 / 1
Регистрация: 10.03.2011
Сообщений: 25
14.04.2011, 17:24     Прочитать бинарный файл и сделать вычисление #1
Всем привет! Передо мной стоит следующая задача:
1) Есть бинарный файл (вроде бы)
2) Есть структура написанная в отдельном файле
3) Надо прочитать файл в соответствии с структурой
4) найти в нем 4 массива (например х1 х2 у1 у2)
5) найти в нем переменную в виде количества "слоев" (в каждом слое массивы х1 х2 у1 у2 )
6) сложить между собой соответствующие массивы из "слоев" (из слоя 0 массив х1 сложить с массивом х1 из слоя 1, потом к нему прибавить х1 из слоя 2 и до конца. И так со всеми четырьмя массивами)
7) вывести результат в виде массива в том виде, в котором он представлен в файле (то есть его можно скопировать в excel

Я слышал, что это можно написать на C++, вообще я программировал на javascript'e,и имел дело когда-то давно с паскалем. Подскажите как реализовать чтение файла по структуре на С++?
http://ifolder.ru/22974929 - вот сам файл + структура, очень прошу помощи)
в структуре требуемые массивы, о которых идет речь имеют названия
BYTE GRPXU;
BYTE GRPXD;
BYTE GRPYU;
BYTE GRPYD;
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
knkd
37 / 36 / 2
Регистрация: 08.08.2010
Сообщений: 162
14.04.2011, 18:58     Прочитать бинарный файл и сделать вычисление #2
А может просто скажете - что за формат файла собираетесь разбирать?
gauss_gauss
13 / 1 / 1
Регистрация: 10.03.2011
Сообщений: 25
14.04.2011, 21:33  [ТС]     Прочитать бинарный файл и сделать вычисление #3
формат файла это есть его расширение? или что? если так, то glm, но оно используется в одной из "местных" программ и сделано специально для этой программе
knkd
37 / 36 / 2
Регистрация: 08.08.2010
Сообщений: 162
14.04.2011, 21:58     Прочитать бинарный файл и сделать вычисление #4
C++
1
2
3
4
5
struct MyStructyre var;
FILE * fp = fopen("MyFile.gim", "rb");
...
fread(fp, &var, sizeof(var), 1);
...
gauss_gauss
13 / 1 / 1
Регистрация: 10.03.2011
Сообщений: 25
15.04.2011, 20:27  [ТС]     Прочитать бинарный файл и сделать вычисление #5
А можно поподробнее описать, что в функции fread выполняется? И для чего используем struct? Можно ли просто объявить переменную?
у меня файл использует переменные типа BYTE, как мне их объявить?

C++
1
2
3
4
5
6
7
8
9
10
11
#include <iostream>
using namespace std;
 
int main(int argc, char* argb[])
{
    Byte GRPXU[2500];
    FILE *fp = fopen("D:\1\1\COMPLEX.gdm", "rb");
    fread(XU, sizeof(XU), 2500, fp);
 
    return 0;
}
правильно ли код написан?
п.с. структура файла в линке
knkd
37 / 36 / 2
Регистрация: 08.08.2010
Сообщений: 162
15.04.2011, 23:46     Прочитать бинарный файл и сделать вычисление #6
Цитата Сообщение от gauss_gauss Посмотреть сообщение
И для чего используем struct? Можно ли просто объявить переменную?
Вы ведь собираетесь читать структурами? Значит и писать нужно в структуру.
Функции fread() и fwrite().
gauss_gauss
13 / 1 / 1
Регистрация: 10.03.2011
Сообщений: 25
16.04.2011, 09:55  [ТС]     Прочитать бинарный файл и сделать вычисление #7
у меня файл использует переменные типа BYTE, как мне их объявить?
knkd
37 / 36 / 2
Регистрация: 08.08.2010
Сообщений: 162
16.04.2011, 20:58     Прочитать бинарный файл и сделать вычисление #8
Цитата Сообщение от gauss_gauss Посмотреть сообщение
Byte GRPXU[2500];
C
1
2
3
Byte GRPXU["Очевидно же что сдесь должно быть число необходимых байт которые вы должны были прочитать ранее"];
/* Но лучше сделвть вот так: */
Byte * GRPXU = (Byte *) malloc(sizeof(Byte) * "Количество необходимых байт с типом size_t");
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
18.04.2011, 09:55     Прочитать бинарный файл и сделать вычисление
Еще ссылки по теме:

Бинарный файл C++
Открыть файл, прочитать. Все, что находится после двоеточия перенести в другой файл C++
Прочитать бинарный файл C++

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

Или воспользуйтесь поиском по форуму:
gauss_gauss
13 / 1 / 1
Регистрация: 10.03.2011
Сообщений: 25
18.04.2011, 09:55  [ТС]     Прочитать бинарный файл и сделать вычисление #9
вот написал такой код, чтение происходит нормально
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
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
#include <stdio.h>
#include <stdlib.h>
 
struct GDM{
    int Well;
    float P;
    float k;
    float Mo;
    float Mw;
    float So;
    float Qw;
    float Qo;
    float z;
    float m;
    unsigned char GRPXU;
    unsigned char GRPXD;
    unsigned char GRPYU;
    unsigned char GRPYD;
    float H;
    float Pz;
    bool Active;
    unsigned char constPar;
    float ValueConst;
    float factQw;
    float factQo;
} var;
 
int main(int argc, char* argb[])
{
        FILE *fp;
 
        if((fp=fopen("COMPLEX.gdm", "rb"))==NULL)
            {
                printf("Error.\n");
                exit(1);
            }
        fread(&var, sizeof(struct GDM), 1, fp);
        printf("Ok.\n");
        return 0;
}
все записалось я так понимаю в переменную var
теперь как мне из этой переменной вытащить то что мне надо?

напомню у меня
C++
1
2
3
4
    unsigned char GRPXU;
    unsigned char GRPXD;
    unsigned char GRPYU;
    unsigned char GRPYD;
это массивы 50 на 50 (в программе они выводятся как табличка экселевская),которые располагаются как слои, количество слоев меняется в файлах.
Мне задать переменные, как массивы в структуре?
мне надо все значения из этих массивов сложить, чтобы получить сумму. Помогите пожалуйста!
Yandex
Объявления
18.04.2011, 09:55     Прочитать бинарный файл и сделать вычисление
Ответ Создать тему
Опции темы

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