2017-02-01 6 views
0

こんにちは私は、未知のC構造の1000レコードからなるバイナリファイルを読んでいます。構造体には、long型int(8バイト)float(4バイト)とdouble(8バイト)のデータ型char(1バイト)int(4バイト) があり、各レコードの最後には、そのレコード内の他のすべてのデータフィールド。構造内の最大データフィールドは11(平均フィールドを含む)にすることができます。例バイナリファイルの変数のデータ型をチェックする方法

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

ある意味、答えはありません。あなたは実際には異なるフォーマットである一方で、それは1つのフォーマットのように見えるデータを構築することができます。 実際には、ほとんどの場合、いつも「眼球」を当てることができます。データをdouble、s float、さまざまな幅の整数のストリームとして出力すると、1つのシーケンスは現実的なデータと賢明に見えます。

しかし、あなたは、最後のメンバーがダブルであり、また平均であるという知識によって助けられています。データをメモリバッファにロードし、int *、float *などにキャストし、合計を加算し、平均を計算して確認します。

関連する問題