Fehler im Programm aba nur wo??



  • Hi,

    ich musste heut ne kleine Arbeit mit Hauptbestandteil Dateiarbeit schreiben ich hatte auch keine Probleme bis dann beim ausführen 2 aufgetretten sind und auch nach fast einer Stunde fehlersuche habe ich die Ursache nicht gefunden.
    Hab mich dann gleich nochmal zu Hause hingehockt und hab den gleichen fehler wieda.

    Prinzip is ganz einfach ich gebe Daten ein,wird in Datei gespeichert,ich gebe daten wieda aus.

    Probleme hab ich bei der Ausgabe:

    1. Ich gebe 7 Datensätze ein aba es werden nur 5 Ausgegeben.
    2. Eine Variable wird mit einer anderen Verknüpft.

    Ich hab das Programm mal in eine txt Datei gepackt und würd mich echt riesig freun wenn mal wer nen blick drauf werfen kann und eventuell auch sieht woher die Fehler kommen.Is zum Glück ja n kurzes Programm.
    Ach ja hät ich fast vergessen, geschrieben hab ich es mit BCB5 im Konsolen Experten.
    Würd mich über Hilfe aba echt riesig freun.

    Is auch wirklich nich groß.(Klick)(Klick)

    mfg Marwel



  • Ich geb dir mal ein Stichwort: Debugger



  • Danke für das Tut, sowas wird einem in der Schule wirklich nich erzählt.
    Mit Hilfe des Debuggers hab ich jetzt auch rausgefunden wo genau das Problem auftritt, allerdings weiß ich trotzdem nich wie ich es beheben kann.

    do
     {
       do
       {
        cout << "Bitte Klasse eingeben(10000-59999): ";
        cin >> daten.klasse;
       }while(daten.klasse<10000||daten.klasse>=60000);
      cout << "Bitte Parallelklasse eingeben: ";
      cin >> [B]daten.parallel;  <--Position 1[/B]
      cout << "Bitte Schueleranzahl eingeben: ";
      cin >> daten.anzahl;
      cout << "Bitte Klassenlehrer eingeben: ";
      cin >> [B]daten.lehrer;  <--Position 2[/B]
      fwrite(&daten,sizeof(daten),1,datei);
      cout << "Ende mit [0] - Neuer Datensatz mit [1]";
      cout << "Aktion";
      cin >> i;
     }while(i!=0);
    

    Bei Position 1 geb ich den Wert "a" ein(is als char definiert),bei Position 2 geb ich ich den Lehrername ein zB "Meier".Halte ich dann das Programm und kontrolliere den Wert von daten.parallel(Position 1) dann ist der Wert nich mehr wie eben eingegeben "a" sondern "aMeier".Also kommt es da zu irgendeinem Konflikt dieser Strukturvariablen, aba ich weiss nich wieso und wie ich ihn beheben kann.

    Definiert hab ich die Struktur so:

    struct Datensatz
    {
    int klasse;
    int anzahl;
    char parallel[1];
    char lehrer[10];
    }daten;
    


  • wie interpretierst du im debugger "parallel"? Als Char oder String?



  • Na "parallel" hab ich in der Struktur als char parallel[1] definiert.

    Was mich ja noch mehr wundert denn eigentlich dürfte parallel so nur ein Zeichen groß sein.



  • Dürfte? Es müsste eigentlich 2 Byte gross sein, da char-Arrays Null-terminiert sind, und für die Null muss auch Platz reserviert werden.
    Schon die Deklaration ist also falsch, korrekt wäre char parallel[2];.



  • oder statt ein char-array einen single character...

    -junix



  • THX @ Jansen

    Das heut hin jetzt schreibt er da nichts zusätzlich rein.
    Da hat mein Lehrer Mist gebaut denn von dem ham ma das als Vorgabe bekommen.

    Muss ich bloss noch rausfinden warum 2 von den 7 Datensätzen unterschlagen werden.


Log in to reply