2017-02-01 2 views
0

Bonjour les gars, je lis un fichier binaire qui se compose de 1000 enregistrements de structure inconnue C. Structure a ces types de données char (1 octet) int (4 octets) long long int (8 octets) float (4 octets) et double (8 octets) et à la fin de chaque enregistrement il y a une double variable qui conserve la moyenne de tous les autres champs de données de cet enregistrement. Le champ de données maximum dans la structure peut être 11 (y compris le champ moyen). par exempleComment vérifier le type de données d'une variable dans un fichier binaire dans c

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

double avg; 
} 

Je ne pouvais pas trouver un moyen de vérifier le type de la variable que je lis de chose binaire file.Only j'ai besoin est une indication que pouvez-vous me dire d'une manière comment trouver le type de données.

+1

Le fichier doit avoir un format connu qui vous indique la taille et le type de chaque enregistrement. Sans cela, il n'y a aucun moyen de savoir ce qu'il y a là-bas. – dbush

+2

Les données dans un fichier binaire n'ont aucun type. Une fois que vous l'avez lu dans une variable de votre programme, cette variable a le type que vous avez défini. –

+0

Mais mon professeur continue à dire que c'est correct, vous pouvez trouver un moyen :) Je n'ai aucune idée ... –

Répondre

0

Dans un sens, il n'y a pas de réponse. Vous pouvez construire des données qui semblent être dans un format tout en étant dans un format différent. En réalité, vous pouvez presque toujours le "regarder". Imprimez les données sous la forme d'un flot de doubles flottants, d'entiers de largeur variable, et une séquence aura l'air sensible et ressemblera à des données réelles.

Mais vous êtes aidés par la connaissance que le dernier membre est un double et aussi un moyen. Il suffit donc de charger les données dans un tampon mémoire, de lancer int *, float * etc, d'additionner le total, de calculer la moyenne et de vérifier.