открыть файл
компилятор Microsoft Visual C++ 6.0
В конечном итоге должна получиться некая смотрел-ка гледелка
? Вопрос 1 открыть файл (формат описан в приложенном файле)
hdf ob;
ifstream input("PAN.hdf", ios::in | ios::binary);
if(!input){cout<<"Erroe open file";};
и считать его в некую структуру
struct hdf{
char BEGINNING_TIME[63];
char ENDING_TIME[63];
char PLATFORM[63];
char SENSOR[63];
char STATION_ID[63];
char PRODUCT_ID[63];
char ALGORITHM_VERSION[63];
__int32 REV_NUMBER;// так как 32 бита
//и т. д.
};
но как я понял так как объекты могут отсутствовать то необходимо осуществить их поиск и заполнить
структуры (а может лучше класс?) как это сделать?
надо ли читая данные из бинарного потока преобразовывать их?
Стримы были разработаны для текстовых файлов. Юзай CreateFile/ReadFile. Тогда прочитавши структуру с диска в масив char используя адресную арифметику присвой значения структуре. Не читай прямо в структуру - можеш ошибится с выравниванием - пазмер структуры в памяти может быть НЕ РАВЕН размеру структуры на диске(суммма длин всех членов структуры).
компилятор Microsoft Visual C++ 6.0
В конечном итоге должна получиться некая смотрел-ка гледелка
? Вопрос 1 открыть файл (формат описан в приложенном файле)
hdf ob;
ifstream input("PAN.hdf", ios::in | ios::binary);
if(!input){cout<<"Erroe open file";};
и считать его в некую структуру
struct hdf{
char BEGINNING_TIME[63];
char ENDING_TIME[63];
char PLATFORM[63];
char SENSOR[63];
char STATION_ID[63];
char PRODUCT_ID[63];
char ALGORITHM_VERSION[63];
__int32 REV_NUMBER;// так как 32 бита
//и т. д.
};
но как я понял так как объекты могут отсутствовать то необходимо осуществить их поиск и заполнить
структуры (а может лучше класс?) как это сделать?
надо ли читая данные из бинарного потока преобразовывать их?[/QUOTE]
Сколько заглавных буков :)
Зависит от способа хранения данных. Если просто бинарка - то CreateFile/ReadFile/WriteFile/CloseHandle - всё что тебе нужно. Кстати, не представляю как в С может размер в памяти отличатся от размера на диске - он строго одинаков, если записывали по размеру sizeof(typename) - ведь всё статическое.
Что-то до меня все ровно не доходит всякие там самоучители не дают такой информации если Вас не затруднит может Вы посмотрите формат и объясните подробней или на пример какой ссылку кинете (РУС)
(РУС) не бывает без купюр... Уж не знаю к сожалению или к счастью.
С такой задачей как у тебя - просто запиши да читай блоками :) У тебя структура имеет СТАТИЧЕСКИЙ ФИКСИРОВАННЫЙ РАЗМЕР. Проще быть ничего не может, просто читай блоки заданного размера в адрес структуры.
truct hdf{
char BEGINNING_TIME[63];
char ENDING_TIME[63];
char PLATFORM[63];
char SENSOR[63];
char STATION_ID[63];
char PRODUCT_ID[63];
char ALGORITHM_VERSION[63];
__int32 REV_NUMBER;// так как 32 бита
//и т. д.
};
hFile = CreateFile(...);
hdf x[23];
DWORD dwRead;
for(int i = 0; i < 23; i++)
{
ReadFile(hFile,&x,sizeof(x),&dwRead,NULL);
};
Для записи так же, только ReadFile меняй на WriteFile. Если надо выбрать энную - читай N блоков в одну и ту же - останется энная - и т.д.
В общем какая тебе ссылка ещё? Тут всё просто по-бараньи и так..