Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
АлександрКом
211 / 174 / 80
Регистрация: 21.10.2012
Сообщений: 859
1

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

11.03.2014, 14:25. Просмотров 406. Ответов 3
Метки нет (Все метки)

Здравствуйте. Имеется файл, в котором 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);
    };
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.03.2014, 14:25
Ответы с готовыми решениями:

Выделение памяти malloc
не работает пример из лекции , там пример на доске такой написан - #include...

Динамическое выделение памяти malloc()
Здравствуйте! Cкажите пожалуйста, как узнать каков максимальный объем...

Выделение памяти malloc realloc
мне задачу поставили, надо не используя stl, загрузить из файла данные. r -...

Выделение памяти с использованием malloc
Доброго времени суток :) В общем есть следующий класс: class Addres { char...

Динамическое выделение памяти под структуру (malloc)
Нашел данное решение на этом форуме, но никак не могу понять как оно работает....

3
Tulosba
:)
Эксперт С++
4750 / 3244 / 497
Регистрация: 19.02.2013
Сообщений: 9,046
11.03.2014, 14:48 2
Цитата Сообщение от АлександрКом Посмотреть сообщение
Имеется файл, в котором 6 чисел типа double.
формат исходного файла показать можете?
Цитата Сообщение от АлександрКом Посмотреть сообщение
long сделал, чтобы числам из файла точно хватило места
Вот это вообще не понял.
Цитата Сообщение от АлександрКом Посмотреть сообщение
fread(&Q[j], sizeof(double), 1, f);
Писать в целочисленную переменную вещественную не хорошо.
0
АлександрКом
211 / 174 / 80
Регистрация: 21.10.2012
Сообщений: 859
11.03.2014, 15:16  [ТС] 3
Цитата Сообщение от Tulosba Посмотреть сообщение
формат исходного файла показать можете?
Ээм я его просто как бинарный файл создал, там 6 чисел..
Цитата Сообщение от Tulosba Посмотреть сообщение
Вот это вообще не понял.
Ну как я мыслил - я заранее не знаю, какого типа переменные хранятся в файле. Если там double, а у меня программа будет написана для считывания int, то т.к. размер double больше int, то числа не будут считываться, т.к. не поместятся в отведенное им место в памяти. И у меня был вопрос - какого типа нужно создать переменную, чтобы уж точно поместились числа
0
Tulosba
:)
Эксперт С++
4750 / 3244 / 497
Регистрация: 19.02.2013
Сообщений: 9,046
11.03.2014, 15:23 4
Цитата Сообщение от АлександрКом Посмотреть сообщение
Если там double, а у меня программа будет написана для считывания int
то это уже неправильно. Выделите например первый байт на признак того, что расположено следом.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
11.03.2014, 15:23

Выделение памяти malloc приводит к неправильным расчетам
Есть функция которая постоянно вызывается для расчетов. Она работает...

При выделении памяти через malloc, как создавать объекты ?
Выделяю память через malloc под 4 объекта, как их создать ? myClass * ptr =...

Выделение памяти через new
void f (int p) { sometype *A = new int ; sometype *B = new int ; ...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru