[C++] Endlosschleife beim Einlesen trotz feof-Befehl

Kuon

Grünschnabel
Hi,

ich schreibe zur Zeit ein Verwaltungsprogramm für CDs in C mit dem Borland C++ 4.52
Das Programm enthält folgende Hauptfunktionen:
Erfassen von CD-Einträgen
Diverse Ausgaben und Abfragen
Ändern von CD-Einträgen
Löschen von CD-Einträgen

Die CD-Daten speichere ich in 2 Textdateien ab.
In der Datei 1 stehen allgemeine CD-Daten, wie Schlüsselnummer, Interpret, Name der CD und die Musikrichtung.
In Datei 2 sind die Titel der jeweiligen CDs gespeichert.

Nun bin ich gerade beim Programmieren der Funktion Löschen, die folgendermaßen funktioniert:
1. Benutzer kann wählen, ob er die Schlüsselnummer der CD oder den CD-Namen eingeben will.
2. Mittels einer switch-Anweisung wird überprüft, was Benutzer eingeben will
Angenommen, der Benutzer wählt die Eingabe der Schlüsselnummer und gibt ein: 1234
3. Ist diese Schlüsselnummer eingegeben, wird überprüft, ob eine CD mit eben dieser Schlüsselnummer vorhanden ist. Um dies zu realisieren, nutze ich eine weitere Funktion mit Namen Suche.
Und in dieser Funktion tritt das Problem auf: Es wir immer ein Datensatz aus der Datei eingelesen und anschließend mit der gesuchten Schlüsselnummer verglichen, stimmen die gesuchte Schlüsselnummer und die gerade eingelesene Schlüsselnummer nicht überein, wird der nächste Datensatz eingelesen, usw.
Problem: Wenn das Einlesen beim vorletzten Datensatz angekommen ist, wird der letzte nicht mehr eingelesen, sondern immer wieder nur der vorletzte. Dadurch entsteht folglich eine Endlosschleife.

Ich kann mir absolut nicht erklären, weshalb da diese Endlosschleife entsteht. Ich hoffe, ihr könnt mir weiterhelfen

Hier sind Screenshots der Funktion Löschen und Funktion Suchen:

Funktion Löschen
Funktion Suchen
 
moin


Das liegt daran das in der Datei mit den Einträgen, der letzte Eintrag nicht mit einem \n abgeschlossen ist. Also nach dem letzten Eintrag muss aufjedenfall noch ne neue Zeile kommen!


mfg
umbrasaxum
 
Hallo,

am vergessenen \n lag es nicht. Das hatte ich überall.

War etwas ganz banales: :rolleyes:
Ich hab in meiner Textdatei zu wenig Daten gehabt.
Statt Schlüsselnummer, CD-Name, Interpret, Genre hatte ich nur Schlüsselnummer CD-Name, Genre.

Also wurde beim Einlesen der Dateiinhalt auf die falschen Variablen gebracht. Als ich das endlich mitbekommen habe, hat sich gleich noch eine Reihe anderer Probleme gelöst.

Trotzdem vielen Dank für deine Antwort. :)
 
moin


Das ist im Prinzip das selbe Problem, wie das das ich dir geschildert hab.
Denn die \n am Ende sind genau so nötig wie das einhalten der Varibelnanzahl.


mfg
umbrasaxum
 
Zurück