binärdatei auslesen in ansi_c statt c++
-
Hallo,
ich möchte folgenden c++ code in ansi c schreiben, komme damit einfach nicht klar... vielleicht kann mir jemand helfen wie ich die Variablen korrekt aus einer binärdatei auslesen kann.
Danke!hier der Code in c++:
#include "stdafx.h"
#include <iostream>
#include <fstream>
#include <cstdlib>...
typedef struct MeasureHeader
{
unsigned int MeasureCount;
char LackNr[5];
char Karosse[3];
unsigned char Ort;
char FileNamePart[19];
} t_MeasureHeader;...
ifstream file("filname.dat", ios::binary);
file.seekg(0,ios_base::beg); //zum Anfang springen, eigenlich nicht nötig
file.read( ( char* )&head, sizeof(t_MeasureHeader));
cout << head.MeasureCount << " Measuee Count " << head.Karosse << " Karosse Typ";
...
-
Den Code kann man fast 1:1 übersetzen:
#include "stdafx.h" #include <stdio.h> //#include <iostream> //#include <fstream> #include <stdlib.h> //#include <cstdlib> typedef struct MeasureHeader { unsigned int MeasureCount; char LackNr[5]; char Karosse[3]; unsigned char Ort; char FileNamePart[19]; } t_MeasureHeader; FILE*file=fopen("filename.dat","rb"); //ifstream file("filname.dat", ios::binary); fread(&head,sizeof(t_MeasureHeader,1,file); //file.read( ( char* )&head, sizeof(t_MeasureHeader)); prinft("%i Count %3s Typ",head.MeasureCount,head.Karosse); //cout << head.MeasureCount << " Measuee Count " << head.Karosse << " Karosse Typ";
-
zunächst Danke!
fread(head,sizeof(t_MeasureHeader),1,file);
es klappt leider noch nicht ganz. Wie muss denn "head" initialisiert werden? "..Argument too small"
-
Sorry, ein Tippfehler - das müsste &head heißen (und head sollte natürlich ein 'MeasureHeader' sein).
-
Alles klar.Besten Dank!
//Lösung:
typedef struct MeasureHeader {
unsigned int MeasureCount;
char LackNr[5];
char Karosse[3];
unsigned char Ort;
char FileNamePart[19];} t_MeasureHeader;
int Count;
char *Lack;
char *Karo;
unsigned char Ort;
char *Dateiname;struct MeasureHeader head;
FILE*file=fopen("Dateiname.dat","rb");
fread(&head,sizeof(t_MeasureHeader),1,file);
// Ausgabe
Count=head.MeasureCount;
Lack=head.LackNr;
Karo=head.Karosse;
Ort=head.Ort;
Dateiname=head.FileNamePart;