Binärdatei einlesen



  • hallo habe zwei structs. eine für daten fester größe und eine für daten variabler größe. jetzt möchte ich gerne daten aus einer Binärdatei auslesen.

    while (fread(&input, sizeof(struct1),1, datei) == 1)
    {
    
    daten[counter].sz = input.sz;
    counter++;
    
    }
    while (fread(&in, sizeof(struct2),1, datei) == 1)
    {
    
    strcpy(dat[i].Vorname,in.Vorname);
    strcpy(dat[i].Nachname,in.Nachname);
    i++;
    
    }
    


  • nero08 schrieb:

    hallo habe zwei structs. eine für daten fester größe und eine für daten variabler größe. jetzt möchte ich gerne daten aus einer Binärdatei auslesen.

    while (fread(&input, sizeof(struct1),1, datei) == 1)
    {
    
    daten[counter].sz = input.sz;
    counter++;
    
    }
    while (fread(&in, sizeof(struct2),1, datei) == 1)
    {
    
    strcpy(dat[i].Vorname,in.Vorname);
    strcpy(dat[i].Nachname,in.Nachname);
    i++;
    
    }
    

    Danke für diese Information! 🙄



  • cooky451 schrieb:

    nero08 schrieb:

    ...

    Danke für diese Information! 🙄

    Man lernt halt nie aus. 🤡



  • ja ah wie darf ich das verstehen?

    was is da falsch wieso funktioniert das nicht?



  • Ich will nach Berlin.

    Ich bin jetzt schon rechts und links abgebogen, bin aber immer noch nicht da.

    Warum?

    Wenn du mir sagst wie ich nach Berlin komme, sage ich dir was dir fehlt.



  • gibts es hier auch Leute die einem Helfen?



  • Natürlich, aber du musst auch etwas genauer sein. In deinem obigen Beitrag steht weder eine Frage, noch eine Fehlerbeschreibung.



  • Wenn du sagst wo dein Problem ist: JA

    Ich denke was Unweiser sagen will:
    Man weiß nicht von wo er kommt, was er genau gemacht hat und wo er jetzt ist.
    Trotzdem fragt er wie er weiterkommen kann.

    Das ist bei deinem Post genauso.
    Mit deinem Programmauschnitt kann man nichts anfangen und eine Frage hast du im Gegensatz zu Unweiser nicht gestellt.

    while (fread(&input, sizeof(struct1),1, datei) == 1)
    {
    
    daten[counter].sz = input.sz;  // Was ist daten, counter und input?
    counter++;
    
    }
    while (fread(&in, sizeof(struct2),1, datei) == 1)
    {
    
    strcpy(dat[i].Vorname,in.Vorname);    // Was ist dat und in?
    strcpy(dat[i].Nachname,in.Nachname);  // - ok wird eine struct sein (gibt es aber viele von)
    i++;
    
    }
    

    Schau mal hier: http://www.c-plusplus.net/forum/136013



  • okay.

    naja was will ich machen natürlich ist das ober nur ein Ausschnitt. es geht grubdlegend darum eine Binär datei einzulesen wober struct1 für konstante Variablen stehen soll und Struct2 zwei eben für variabeln mit variabler größe.

    und die beiden while schleifen sollen die datensätze eben einlesen.

    jetzt hab ich zwei Probleme zum einen wird eine völlig falsche SZ eingelesen (irgendeine lange zahl). zum anderen wird die zweite while schleife nie ausgeführt.

    was kann sein?

    auf wunsch poste ich auch mehr code....

    FILE *datei;
      Struct1 daten[50], input;
      Struct2 dat[50], in;
    


  • Der Link den ich gepostet habe, steht auf der ersten Seite vom C (C89 und C99) Forum als 2. Thema unter dem Titel Wichtig: RTFM! oder warum dir keiner helfen will...
    Lies ihn durch und du wirst die ersten Antworten verstehen.

    Deine erste while Schleife liest solange Daten ein, solange welche in der Datei sind.
    Du fragst keine Grenze ab und kein EOF. Woher soll die Schleife wissen ab wann die variablen Daten anfangen?


Anmelden zum Antworten