Danke Leute für Eure Hilfe!!!!
Hab die Lösung meines Problems gefunden...Konnte es aber leider noch nicht testen. =(
Hatte die Vorschläge von Euch ausprobiert und in scanf \n zu benutzen hat leider nichts gebracht...
Dieser Lösungsvorschlag klingt gut:
Hilfe zum Thema: C-ANSI, Tastaturzeichen, Einlesen
Bekanntes Problem der C-Library
Die Ursache: die Eingabe-Funktionen von stdio.h werden alle mit ENTER vom Benutzer abgeschlossen.
Dieses ENTER-Zeichen wird nach dem Einlesen und Entfernen der eingegebenen Tastaturzeichen
nicht aus dem Eingabepuffer entfernt - es bleibt als einziges Zeichen darin zurück.
Wird nun mit gets () eine neue Eingabe vorgenommen, findet gets () im Eingabepuffer das Zeichen ENTER vor und glaubt,
die Eingabe wäre also schon abgeschlossen. Also wartet gets () nicht auf die eigentliche Eingabe,
sondern bricht diese ab und es wird die nächste Programmanweisung ausgeführt. Der Programmbenutzer hat somit den Eindruck, als würde gets () übersprungen.
Abhilfe:
vor gets den Eingabepuffer säubern mit
fflush (stdin);
Zwar ist nach der C-Library-Definition von fflush diese Funktion bei Eingabepuffern undefiniert.
Jedoch haben alle bekannten C-Libraries fflush (stdin); so programmiert,
dass dabei der Eingabepuffer gelöscht wird (d.h. alle Zeichen, die sich noch darin befinden, werden entfernt,
so auch noch das von scanf zurückgebliebene ENTER).
Hinweis:
man sollte für string-Eingaben unbedingt fgets benutzen und sowohl gets als auch scanf vermeiden;
zumal die Eingabe mit scanf beim ersten Leerzeichen abgebrochen wird.
Hoffe, dass es klappt =)
Danke für Eure schnelle Hilfe!
Gruß
Pete
Lesezeichen