Liste Einlesen klappt nicht
-
Hi Leute!
Ich hab das Problem, dass beim Einlesen meiner Datei Testat.txt im ersten Durchlauf immer Datenmüll drin liegt. Selbst wenn die Datei leer ist springt die Funktion in die erste If-Anweisung und erkennt sie als true an obwohl der Wert fp eigentlich Null ist.
Ist mein erstes Programm in C++. Habe als Testataufgabe bekommen eine speicherbare Liste für Mietwagen zu programmieren.
Hab nun schon einige Stunden damit zugebracht den Fehler zu finden, aber irgendwie hab ich keinen Schimmer woran das hängt. Wäre euch daher um eurer Hilfe sehr verbunden.Danke,
euer snoopy!void vorwaertsrueckwaerts(int a) { anz=0; leer=true; if((fp=fopen("Testat.txt","r")) != NULL) { while (!feof(fp)) { if (leer == true) { // Liste anlegen (initialisieren) act = new PKW; // Listenel. anlegen im freien Speicher fread(act,sizeof(PKW),1,fp); first = act; // Adresse des ersten Elementes merken last = act; // zu Beginn ist erstes Element auch das letzte El. last->back = NULL; last->next = NULL; // Adresszeiger auf nächstes El. ist NULL leer = false; // Liste existiert anz++; act->id = tempid; if (tempid>id_wert) { id_wert=tempid; } } else { // Verkopplung der Elemente realisieren act = new PKW; // weiteres Listenelement fread(act,sizeof(PKW),1,fp); if (!feof(fp)) { act->back = last; last->next = act; // Verweis auf neues Element, statt NULL-Zeiger last = act; // ist auch das letzte Element last->next = NULL; // letztes Element next muß NULL sein anz++; tempid = act->id; if (tempid>id_wert) { id_wert=tempid; } } } } printf("\nEs wurden %d Datens\x84""tze gelesen",anz); getchar(); if (a == 1) { anzeigen('1'); } if (a == 2) { anzeigen('2'); } } else { if ((a == 1) | (a == 2)) { system("cls"); printf("Es wurden %d Daten gefunden",anz); getchar(); } } fclose(fp); }
-
Koenntest du bitte Code-Tags reinmachen? Das kann man so nur sehr schlecht lesen.
Uebrigens ist das C, kein C++, was aber nicht heisst, dass wir dir nicht helfen
mfg
v R
-
Weiß leider nicht was du mit Code-Tags meinst.
Gruß
Snoopy!
-
Schwachsinn, diese Formatierung ist zwar nicht der Standard, aber schneller und einfacher zu lesen! Ist für manche nur etwas gewöhnungsbedürftig.
Sebo
-
Möglicherweise steht in deiner Datei ein ENTER-Zeichen als erstes zeichen drinne. Dann wird die Schleife auch durchlaufen