Brauche Hilfe Programm funktioniert nicht mehr!!!
-
Bei welchem i passiert das, und wie kommen die Daten da rein.
Istbuecher[i].titel
überhaupt ein gültiger Zeiger?
-
Ist buecher[i] für jedes i gültig? Ist buecher[i].titel gültig?
-
Es muss höchstwahrscheinlich statt
for(i=0 ; i<=n; i++)
richtig
for(i=0 ; i<n; i++)
heissen. Klassischer Pfuscher JW Fehler.
-
Hier in dieser Zeile könnte ein Fehler liegen:
[code]for(i=0 ; i<=n; i++) [/code]
Aber überlege dir bitte, warum, das sieht für mich schon wieder so nach Hausaufgabe aus.
Edit: Da war jemand schneller.
-
Es sind mehere Datensätze gespeichert die sind mit einer csv -Datei rein gekommen.
Der Zeiger sollte gültig sein da es nur so weit zählen darf so viel Datensätze sind
-
Johannes2411 schrieb:
Es sind mehere Datensätze gespeichert die sind mit einer csv -Datei rein gekommen.
Der Zeiger sollte gültig sein da es nur so weit zählen darf so viel Datensätze sindSollte ist schlecht. Überprüfe es doch. Nutze den Debugger! Setze dir einen Haltepunkt an dieser Stelle und überprüfe für jeden Durchlauf, ob die Zeiger gültig sind.
-
Hab es selber geschafft trotzdem Danke!!
-
Und was war die Lösung?
-
Johannes2411 schrieb:
Hab es selber geschafft trotzdem Danke!!
Und ...?
Was war es?
Andere die das hier finden hätten auch gerne die Lösung.
-
Ich hab den char *pointer weggelassen und die strstr direkt in die if-Verzweigung getan und nach dem printf ein break gemacht und jetzt gehts
buch_t *sucheBuch(buch_t *buecher, int n) { char eingabe1[200]; char eingabe2[200]; char eingabe3[200]; char dummy = 0; int i; printf("A:Ueber Buchnummer suchen\n"); printf("B:Ueber Namen suchen \n"); sscanf(gets(eingabe1),"%c", &dummy); switch(dummy) { case 'A': case 'a': printf("Geben Sie die Buchnummer ein: \n"); gets(eingabe2); for(i=0 ; i<n; i++) { if(strstr(buecher[i].buchNummer, eingabe2)) { printf("BuchNr: %s Titel: %s Bestand: %d Preis: %.2f \n", buecher[i].buchNummer, buecher[i].titel, buecher[i].bestand, buecher[i].preis); break; } } break; case 'B': case 'b': printf("Geben sie den Namen des Buches ein: \n"); gets(eingabe3); for(i=0 ; i<n; i++) { if(strstr(buecher[i].titel, eingabe3)) { printf("BuchNr: %s Titel: %s Bestand: %d Preis: %.2f \n", buecher[i].buchNummer, buecher[i].titel, buecher[i].bestand, buecher[i].preis); break; } } break; } return 0; }
-
Das geht vermutlich nur, weil immer ein Titel gefunden wird. Wenn der nicht gefunden wird und die Schleife bis zum Ende durchläuft, kracht's wahrscheinlich wieder (probier es am besten mal aus). Wie schon vermutet wurde, dürfte die Bedingung
i<=n
falsch sein.
-
Du hattest recht ich hab das = in der for-Schleife weggetan und jetzt gehts auch bis zum Schluss. Danke
-
Den Code hab ich oben jetzt richtig gemacht
-
Johannes2411 schrieb:
Den Code hab ich oben jetzt richtig gemacht
Super.
Mein Tipp an dich wäre folgender: wenn du nicht ständig raten willst, was denn dieses Mal wieder der Fehler ist, dann schau dir mal an, wie der Debugger funktioniert. Damit hast du solche Probleme im Handumdrehen gelöst, da du dir zur Laufzeit ansehen kannst, was so in den Variablen steckt, Haltepunkte setzen kannst uvm.
-
Werde ich machen.
Danke