Struct in Array speichern und wahlweise ausgeben



  • Hi,

    arbeite mich zur Zeit in struct und arrays ein. Ich will aus einer .dat binär Datei Daten holen und das funktioniert auch soweit alles. Wie unten zu sehen ist würde ich gerne den ersten Datensatz aus dem Array 0 beziehen, die Daten werden auch korrekt angezeigt, aber leider alles über 0 also 1,2,3 u.s.w werden nicht korrekt / gar nicht angezeigt.

    Habe ich das mit dem Struct und dem Array falsch geschrieben oder wo sitzt das Problem ?

    Bitte nicht steinigen, C ist ziemlich neu für mich 🙂

    #pragma pack(1)
    struct 	Satz
    		{
    	char 	EAN[14];
    	char 	Lieferant[31];
    	short 	Zugang;
    	float 	Verkaufspreis;
    		}__attribute__ ((packed));
    
    int main()  {
        struct Satz SatzArray[50];
    
    printf("\nLieferant: \t%s",SatzArray[0].Lieferant);
    printf("\nVerkaufspreis: \t\t%.6f",SatzArray[0].Verkaufspreis);
    printf("\nLieferant: \t%s",SatzArray[1].Lieferant);
    printf("\nVerkaufspreis: \t\t%.6f",SatzArray[1].Verkaufspreis);
    printf("\nLieferant: \t%s",SatzArray[2].Lieferant);
    printf("\nVerkaufspreis: \t\t%.6f",SatzArray[2].Verkaufspreis);
    }
    

  • Mod

    Wie wird denn das Array befüllt? Wahrscheinlich liegt dort der Fehler.

    Ein anderes Thema: Eine Fließkommazahl ist der denkbar schlechteste Datentyp für Geldbeträge.



  • Eigentlich so wie ich es gepostet habe ^^
    Hm... Dachte das geht so einfach xD, weil ich das so in einen Tutorial gesehn habe.

    Wie kann ich denn die ganzen Daten ins Array übertragen ? Weil den ersten Datensatz zeigt der ja ohne probleme an.


  • Mod

    Crusha schrieb:

    Eigentlich so wie ich es gepostet habe ^^

    Also gar nicht? Dann ist auch kein Wunder, wenn nichts passiert. Aber es ist ein Wunder, wenn der erste Datensatz korrekt angezeigt wird, denn es gibt ihn gar nicht.

    Wie kann ich denn die ganzen Daten ins Array übertragen ? Weil den ersten Datensatz zeigt der ja ohne probleme an.

    Das glaube ich dir nicht. Da wird nirgendwo irgendetwas gefüllt. Da kann nichts außer Müll angezeigt werden. Dein Programm ist ein ganz anderes. Vermutlich eines, bei dem auch Dateien vorkommen, wenn ich das mal aus

    Ich will aus einer .dat binär Datei Daten holen und das funktioniert auch soweit alles.

    schlussfolgern darf.



  • Ok wenn du mir nicht glaubst. Würdest du mir dann bitte erklären wie ich von der struct die daten an ein Array übergebe ?


  • Mod

    Crusha schrieb:

    Ok wenn du mir nicht glaubst. Würdest du mir dann bitte erklären wie ich von der struct die daten an ein Array übergebe ?

    😕 Diese Frage macht ungefähr so viel Sinn, wie zu fragen, wie man die Passagiere von der Konstruktionszeichnung auf den Parkplatz bringt. Jedes einzelne Wort steht im Duden, aber zusammen machen sie so keinen Sinn.

    Du drückst dich so ungeschickt aus, dass ich keine Ahnung habe, was du machst oder möchtest. Die bisherigen Antworten sind daher ebenfalls mit Vorsicht zu genießen, denn obwohl ich deine Fragen so gut wie möglich beantwortet habe, hast du vermutlich ganz was anderes gemeint.



  • Ich glaube, da passt der Text nicht zu Code.
    Vielleicht liegt es am Einlesen deiner Binärdatei; ohne den richtigen Code zur Frage ist nichts zu machen.



  • Was bedeutet eigentlich :

    __attribute__ ((packed));
    

    ?



  • newbie110 schrieb:

    Was bedeutet eigentlich :

    __attribute__ ((packed));
    

    ?

    Vermute, das ist die Schreibe für gcc, wo msvc #pragma pack(1) mag.


Anmelden zum Antworten