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;

    🙂


Anmelden zum Antworten