![]() |
|
| Правила Форума редакция от 22.06.2020 |
|
|||||||
|
|
Окажите посильную поддержку, мы очень надеемся на вас. Реквизиты для переводов ниже. |
|
![]() |
|
|
Опции темы | Опции просмотра |
Language
|
|
|
#1
|
|
Неактивный пользователь
Регистрация: 14.11.2008
Сообщений: 1
Репутация: 0
|
Ессть бин файл с вещественными числами. Как их оттуда прочитать по одному?
|
|
|
|
| Реклама: |
|
|
#2
|
|
fRead() , позволяет читать данные бинарным способом. Для этого файл должен быть открыт с параметром "rb" в fopen. double и float если не ошибусь занимают 8 и 4 байта соответственно.
Тоесть вы сможете как источник подставить float* и прочесть данные по 4 байта в этот массив. Но есть одна проблема - количество этих чисел - его нужно знать заранее, но это будет не проблема если узнаете размер файла...
__________________
Проблема есть следствие ее решения... Чем больше я узнаю, тем больше чувствую себя дураком. |
|
|
|
|
|
|
#3
|
|
Постоялец
![]() ![]() ![]() ![]() ![]() Пол:
Регистрация: 05.02.2007
Адрес: Москва
Сообщений: 662
Репутация: 271
|
Код:
FILE *f=fopen("mydata.bin","rb");
double x[1000];
i=0;
while( i<1000 && (fread(&x[i],sizeof(double),1,f)!=0))
i++;
fclose(f);
__________________
Сергей Сергеевич |
|
|
|
| Эти 2 пользователя(ей) сказали cпасибо за это полезное сообщение: |
|
|
#4
|
|||||||||||||||||||||||
|
Пользователь
![]() Пол:
Регистрация: 27.02.2008
Адрес: Днепропетровск, Украина
Сообщений: 149
Репутация: 802
|
вообще то в стандартной библиотеке для этого существует vector<double> Код:
typedef vector<double> VecDouble;
VecDouble array;
FILE *f=fopen("mydata.bin","rb");
double x=0.0;
while( fread(&x,sizeof(double),1,f)!=0)
array.push_back(x);
fclose(f);
|
|||||||||||||||||||||||
|
|
|
|
|
#5
|
|
Постоялец
![]() ![]() ![]() ![]() ![]() Пол:
Регистрация: 05.02.2007
Адрес: Москва
Сообщений: 662
Репутация: 271
|
Автор не задавал вопрос о способе размещения прочитанных данных.
Задача была прочитать числа по одному. Кстати, ему уже похоже данная тема по барабану.
__________________
Сергей Сергеевич |
|
|
|
|
|
#6
|
|||||||||||||||||||||||
|
Пользователь
![]() Пол:
Регистрация: 27.02.2008
Адрес: Днепропетровск, Украина
Сообщений: 149
Репутация: 802
|
автор нуб. а как опредилить профпринадлежность человека который пишит подобный код и приводит его в ответе? Сантехник? Столяр? Дворник? Не программист - это точно. |
|||||||||||||||||||||||
|
|
|
| Сказали спасибо: |
|
|
#7
|
|||||||||||||||||||
|
Постоялец
![]() ![]() ![]() ![]() ![]() Пол:
Регистрация: 05.02.2007
Адрес: Москва
Сообщений: 662
Репутация: 271
|
Как Вы думаете, много ли начинающих программистов понимают, что эта строка означает? Мое мнение, что пока человек не научился работать с простыми массивами, ему не стоит браться за темплейты и контейнеры.
__________________
Сергей Сергеевич Последний раз редактировалось zss; 22.11.2008 в 18:01.. |
|||||||||||||||||||
|
|
|
|
|
#8
|
||||||||||||||||||||||||||||||||||||||||||||||
|
Пользователь
![]() Пол:
Регистрация: 27.02.2008
Адрес: Днепропетровск, Украина
Сообщений: 149
Репутация: 802
|
Может быть я конечно резко выразился - но в данном случае подобное использование массива, вряд ли свидетельствует о том что программист "научился работать". Это не просто плохой стиль программирования - на любом собеседовании в серьезные компании даже на должность юниора за подобный код вы получите низший бал - потому что ваш код по сути решает задачу в очень ограниченном объеме. Или я не прав?
это базовые основы языка - почему вы считаете что определение "начинающий" позволяет этого не знать?
объект вектор является частью стандартной библиотеки языка - и как раз предназначен для использования в подобных ситуациях. Чем отличается ваше использование "простого массива" и в чем "не простота" использования вектора? В данном случае мы не получаем никакого выигрыша от использования простого массива - но в полной мере получаем все его проблемы. В чем я не прав, и почему должно быть разделение - начинающим - массивы, продвинутым - контейнеры и шаблоны? |
||||||||||||||||||||||||||||||||||||||||||||||
|
|
|
| Сказали спасибо: |
|
|
#9
|
|
Постоялец
![]() ![]() ![]() ![]() ![]() Пол:
Регистрация: 05.02.2007
Адрес: Москва
Сообщений: 662
Репутация: 271
|
Дело не в выигрыше. А в том, что контейнеры, это объекты.
Соответственно, чтобы их сознательно использовать, надо изучить всю технологию объектно ориентированного программирования. В рамках УЧЕБНОГО примера, который мы с Вами обсуждаем, совершенно незачем переходить к ООП. Обратите внимание, что, как правило, учебные примеры весьма далеки от кода, который потом реально пишется.
__________________
Сергей Сергеевич |
|
|
|
|
|
#10
|
||||||||||||||||||||||||||||||||||||||||||||||
|
Пользователь
![]() Пол:
Регистрация: 27.02.2008
Адрес: Днепропетровск, Украина
Сообщений: 149
Репутация: 802
|
Здесь я с вами не согласен. Как такового ООП здесь нет и не предвидеться. Использование объектов - еще не объектно-ориентированное программирование. И для использования объектов из набора стандартной библиотеки С++ вовсе нет особой необходимости быть специалистом в ООП - достаточно просто знать что они есть. Вы кстати в пылу спора сами себе начали противоречить - использовать дескриптор файла (указатель на объект файлового потока) из стандартной библиотеки ввода-вывода начинающий может использовать, а такой же объект из стандартной библиотеки шаблонов - ему почему-то надо изучить всю технологию ООП ![]() (Кстати и вы и я допустили грубую ошибку в коде - оба используем дескриптор не проверив его - это так, к слову). Добавлено через 9 минут
как раз после такого "учебного" кода, и пишется зачастую "индийский код". Чесслово, не в обиду. ![]() Последний раз редактировалось k0t_; 23.11.2008 в 21:11.. Причина: Добавлено сообщение |
||||||||||||||||||||||||||||||||||||||||||||||
|
|
|
| Сказали спасибо: |
|
|
#11
|
|
Постоялец
![]() ![]() ![]() ![]() ![]() Пол:
Регистрация: 05.02.2007
Адрес: Москва
Сообщений: 662
Репутация: 271
|
Без дескриптора файла не обойтись,
его в данном примере надо как-то читать. В принципе, наше обсуждение здесь довольно бессмысленное, поскольку вряд ли Вам понадобится учить программированию людей, которые полные чайники.
__________________
Сергей Сергеевич |
|
|
|
|
|
#12
|
|
Пользователь
![]() Пол:
Регистрация: 27.02.2008
Адрес: Днепропетровск, Украина
Сообщений: 149
Репутация: 802
|
Учить полных чайников не сложно - гораздо сложнее потом переучивать. Дурные привычки приобретаются легко. Исчезают трудно.
|
|
|
|
| Сказали спасибо: |
![]() |
Похожие темы
|
||||
| Тема | Автор | Раздел | Ответов | Последнее сообщение |
| Из числа в текст. Excel. | mrpleasure | МOffice, Переводчики (словари), Органайзеры, Текстовые редакторы | 9 | 19.03.2014 11:08 |
| комплексные числа | BFTFenix | Visual C++ / С/C++ | 15 | 05.02.2011 10:48 |
| Перевод из двоичного числа в десятичное | Crosslive | Программирование | 2 | 22.10.2007 12:22 |
|
|