Frage zum Auslesen einer Binärdatei
-
Vielen Dnk für die schnelle Antwort. Leider habe ich gerade erst mit dem Programmieren angefangen und kann Euren Ausführungen noch nicht bis ins Detail folgen. Ich habe versucht Eure Ideen zu implementieren, leider weniger erfolgreich.
Meine erste Überlegung war, daß ich quasi eine Schleife bräuchte, die die mir von i=1 bis 20 Variablen *vertrnr[7];
*art[21];
*liiferant[21]; *
*vertagsmenge;
*liefertermin[3];
*liefermenge;
erzeugt. Und genau das ist mein "Knackpunkt". Wie wird genau das gemacht. Wie gesagt leider fehlt mir das Verständnis hierfür.
Sorry, dass ich so ein "Dumm-Patz" bin, doch bitte helft mir.
-
Du brauchst ein Array, das groß genug ist um die benötigte Anzahl an 'vertrag'-Objekten aufzunehmen - wenn die Anzahl fest ist, geht das statisch, ansonsten mußt du den Speicher per malloc bereitstellen. Auf die Elemente des Arrays kannst du dann über ihren Index zugreifen:
//Platz bereitstellen: struct vertrag* vertraege=malloc(anzahl*sizeof(struct vertrag)); //Array füllen: for(i=0;i<anzahl;++i) { //Direkte Zuweisung: vertraege[i].vertrnr=...; ... //oder alternativ - einlesen aus Datei: fscanf(infile,"%s",&(vertreage[i].vertrnr)); ... }
-
Schon wieder fscanf?
-
bin am verzweifeln...ich kriege das nicht hin. das normle auslesen klappt, zumindest kriege ich die liste der daten, die ich oben pepostet habe. doch leider kriege ich das ganze nicht in einen array.
-
LordJaxom schrieb:
Schon wieder fscanf?
OK, dann kein fscanf:
//1: Platz schaffen: //erzeuge einen Speicherbereich, der groß genug ist für 'anzahl' Verträge //'anzahl' mußt du vorher selber berechnen struct vertrag* vertraege=malloc(anzahl*sizeof(struct vertrag)); //2: Einlesen //lese entsprechend viele Datensätze aus der Datei: fread(vetraege/*Ziel*/,sizeof(struct vertrag)/*Größe*/,anzahl,infile/*Eingabe-FILE* */);
Anschließend kannst du mit 'vertraege[i]' auf die einzelnen Elemente des Arrays zugreifen.
PS: Nicht vergessen - free(vertraege); ans Programmende
-
thommy, hat dir keiner beigebracht, wie man programmiert?
ich bezweifle irgendwie, dass du mit der aufgabe ins kalte wasser geschmissen wurdest.
du hast doch garantiert massig gelegenheit gehabt, die lehrer um hilfe oder erklaerungen zu bitten, oder?
-
Keine Ahnung wie Du programmieren gelernt hast. Ich jedenfalls habe im Oktober im 1.Semester angefangen. Bis Ende November haben wir C progrmmiert, momentan Java und dann noch C#. Für 3 Sprachen in einem Semester bleibt nicht viel Zeit ins Detail zu gehen und wenn man die Profs fragt, bekommt man eher eine Antwort dahingehend, man könnte ja auch aufhören zu studieren, wenn man es nicht packt. Das Problem oben ist nur ein kleiner Bruchteil meiner Abschlußarbeit in C. Aus Deinen Zeilen klingt ein bißchen "Faulheit" meinerseits durch. Falls Du Faulheit damit bezeichnet, dass man stundenlang (bis nach mitternacht) und das über Tage an einer Sache sitzt, die mn gerne begreifen möchte aber die Grundlagen nicht richtig versteht, dann bin ich wohl faul. Es wäre eher schön, wenn Du mir weiterhelfen kannst. Oder ist das hier nur ein Forum für Kenner???
Falls mir irgendwer weiterhelfen möchte, dem bin ich echt,echt dankbar!!!!
-
Wenn Du weitergeholfen werden willst, beschreibe was Du nicht verstehst oder was nicht funktioniert, poste Codeabschnitte etc...
Wenn wie Du sagst das auslesen einzelner Sätze schon funktioniert, sollte es kein Problem sein z.B. CStolls (oder auch mein) letztes Codebeispiel einzubauen und auszuprobieren. Hast Du das versucht? Was funktioniert nicht, was für Effekte bemerkst Du? Wie sieht Dein Programm jetzt aus?
Wir helfen eigentlich alle gern, aber wir machen unbezahlt keine spontanen Marathonexkursionen über ungenau bekannte Problemfelder.
-
Du hilfst uns aber auch nicht wirklich um dir helfen zu können.
Erstmal versuchst du gar nicht Irrtümer unsererseits aufzuklären. Und irgendwelchen Code deinerseits gibts auch nicht. Wenn du eine fertige Lösung willst dann wist du dir das etwas kosten lassen müssen.
Also Du zeigst uns eine struct in die du deine Daten einlesen willst. Gleichzeitig zeigst du uns eine Haufen Daten die, wenn sie wirklich so vorliegen, darauf schliessen lassen dass man sie mit scanf() einlesen sollte -> keine Reaktion deinerseits. Dann kommt das Gerücht auf dass die Daten binär gespeichert sein könnten. Wieder zeigt dir jemand wie man das machen könnte -> wieder nichts von dir. Und dann jammerst du herum wie schwierig es ist 3 Sprachen auf einmal lernen zu müssen und dass wir nur Kennern helfen würden.
Glaubst du nicht dass es auch an dir liegen könnte das da nichts gescheites dabei rauskommt. An mir solls nicht liegen. Würde gerne helfen wenn ich wüsste wobei.
Kurt
-
im ernst, alles steigt und faellt mit den grundlagen. ob du die beigebracht bekommst oder nicht ist irrelevant. im studium ist es deine aufgabe, zu koennen, was verlangt wird. das ist logischerweise schwierig, damit die spreu vom weizen getrennt wird. keiner schenkt dir was.
konkret: du willst bei dieser aufgabe hilfe, dann sag auch bitte, wo konkret dein problem ist.
wenn du keinen plan hast, wie du ueberhaupt anfangen sollst, dann fang am besten mit blatt und bleistift an, leg dich irgendwo gemuetlich hin und stell dir vor, wie das programm im groben laufen sollte. dann kritzelst du dir ein paar flow charts (freihandkreise und kaesteln verbunden mit geschwungenen strichen), damit du nicht alle detailgrade gleichzeitig im kopf haben musst.
wenn dir die "details" fehlen, dann kommt es immer gut, wenn man seine vollbrachten muehen darstellt. du sollst also kleine beispiele zeigen, in denen du zeigen kannst, wo deine probleme liegen. hat mehrere vorteile: wir, die helfenden, muessen weniger code lesen und du kommst vielleicht beim vorbereitend der beispiele von allein auf die loesungen. alternativ poste einfach deinen bisherigen code, damit wir auch experimentieren koennen (also vollstaendige kompilierbare codes).
dann ist es wichtig, dass du dein problem penibelst detailiert schilderst. bei "ich weiss nicht weiter" koennen wir dir nicht helfen. "ich kann die daten lesen und schreiben, aber nicht sortieren" ist schon viel besser, weil wir jetzt ansatzpunkte haben, dir zu helfen.machs uns einfach, dir zu helfen. hilf uns.