2017-02-01 2 views
0

Привет, ребята, я прочитал двоичный файл, который состоит из 1000 записей неизвестной структуры C. Структура имеет эти типы данных char (1 байт) int (4 байта) long long int (8 bytes) float (4 байта) и double (8 байт), а в конце каждой записи есть двойная переменная, которая сохраняет среднее значение все остальные поля данных в этой записи. Максимальное поле данных в структуре может быть 11 (включая среднее поле). , напримерКак проверить тип данных переменной в двоичном файле в c

struct data{ 
char v1; 
int v2; 
float v3; 
double v4; 
long long int v5; 
int v6; 

double avg; 
} 

Я не смог найти способ проверить тип переменной, которую я прочитал от бинарной file.Only, что мне нужно это намек только вы можете сказать мне способ, как найти тип данных.

+1

Файл должен иметь известный формат, который сообщает вам размер и тип каждой записи. Без этого нет никакого способа узнать, что там. – dbush

+2

Данные в двоичном файле не имеют типа. Когда вы прочитаете его в переменной в вашей программе, эта переменная имеет тип, который вы определили. –

+0

Но мой профессор продолжает говорить, что это правильно, вы можете найти способ :) У меня нет никакой идеи ... –

ответ

0

В одном смысле ответа нет. Вы можете создавать данные, которые выглядят так, как будто они находятся в одном формате, но фактически находятся в другом формате. На самом деле вы можете почти всегда «глазным яблоком». Распечатайте данные как поток двойных, s float, целых чисел различной ширины, и одна последовательность будет выглядеть разумно и как реальные данные.

Но вам помогает знание того, что последний член является двойным, а также средним. Поэтому просто загрузите данные в буфер памяти, добавьте в int *, float * и т. Д., Добавьте общее количество, выработайте среднее значение и проверьте.

Смежные вопросы