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

Выделение памяти через malloc и считывание данных - C++

Восстановить пароль Регистрация
 
АлександрКом
11 / 11 / 1
Регистрация: 21.10.2012
Сообщений: 326
11.03.2014, 14:25     Выделение памяти через malloc и считывание данных #1
Здравствуйте. Имеется файл, в котором 6 чисел типа double. В программе имеется 2 массива. В 1-ый записываю все числа из файла, стоящие на нечетных местах, а во 2-ой - всё, что на четных местах. В действительности я не должен знать, сколько чисел в массиве, поэтому я узнаю размер файла и выделяю половину этого размера каждому массиву через malloc. Не могу найти ошибку, значения чисел в массивах совсем не те. (long сделал, чтобы числам из файла точно хватило места)
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
long* I;
long* Q;
int err=0;
int nFileLen;
FILE *f;
    f = fopen("C:\\Newfolder\\n", "rb");
    if (f == NULL){
        std::cout << "=(";
        err=1;
    }
    else {
        fseek(f, 0, SEEK_END);
        nFileLen = ftell(f);
        fseek(f, 0, SEEK_SET);
        I=(long*)malloc(nFileLen/2);
        Q=(long*)malloc(nFileLen/2);
        for (int j = 0; j < nFileLen / ( 2 * sizeof(double) ); j++) {
            fread(&I[j], sizeof(double), 1, f);
            fread(&Q[j], sizeof(double), 1, f);
        };
        fclose(f);
    };
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.03.2014, 14:25     Выделение памяти через malloc и считывание данных
Посмотрите здесь:

Динамическое выделение памяти malloc() C++
Выделение памяти с использованием malloc C++
Ввод данных/выделение памяти (динамический символьный массив) C++
выделение памяти malloc C++
C++ Освобождение памяти malloc free
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Tulosba
:)
Эксперт C++
4378 / 3221 / 297
Регистрация: 19.02.2013
Сообщений: 9,044
11.03.2014, 14:48     Выделение памяти через malloc и считывание данных #2
Цитата Сообщение от АлександрКом Посмотреть сообщение
Имеется файл, в котором 6 чисел типа double.
формат исходного файла показать можете?
Цитата Сообщение от АлександрКом Посмотреть сообщение
long сделал, чтобы числам из файла точно хватило места
Вот это вообще не понял.
Цитата Сообщение от АлександрКом Посмотреть сообщение
fread(&Q[j], sizeof(double), 1, f);
Писать в целочисленную переменную вещественную не хорошо.
АлександрКом
11 / 11 / 1
Регистрация: 21.10.2012
Сообщений: 326
11.03.2014, 15:16  [ТС]     Выделение памяти через malloc и считывание данных #3
Цитата Сообщение от Tulosba Посмотреть сообщение
формат исходного файла показать можете?
Ээм я его просто как бинарный файл создал, там 6 чисел..
Цитата Сообщение от Tulosba Посмотреть сообщение
Вот это вообще не понял.
Ну как я мыслил - я заранее не знаю, какого типа переменные хранятся в файле. Если там double, а у меня программа будет написана для считывания int, то т.к. размер double больше int, то числа не будут считываться, т.к. не поместятся в отведенное им место в памяти. И у меня был вопрос - какого типа нужно создать переменную, чтобы уж точно поместились числа
Tulosba
:)
Эксперт C++
4378 / 3221 / 297
Регистрация: 19.02.2013
Сообщений: 9,044
11.03.2014, 15:23     Выделение памяти через malloc и считывание данных #4
Цитата Сообщение от АлександрКом Посмотреть сообщение
Если там double, а у меня программа будет написана для считывания int
то это уже неправильно. Выделите например первый байт на признак того, что расположено следом.
Yandex
Объявления
11.03.2014, 15:23     Выделение памяти через malloc и считывание данных
Ответ Создать тему
Опции темы

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