002
17.12.2007, 19:33 Uhr
Hans
Library Walker (Operator)
|
Hi,
das Problem hängt mit der Eingabepufferung zusammen. Du liesst mit scanf ja nur ein Zeichen ein. Aber bevor Dein Programm das Zeichen auswerten kann, musst Du die <Return> oder <Enter>-Taste drücken. Dadurch gelangt ein weiteres Zeichen, nämlich '\n' in den Eingabepuffer, bzw. Eingabestream. Wenn das Programm jetzt mit der Berarbeitung des switch-blocks fertig ist, wird die Abbruchbedingnung der Schleife überprüft. Da diese nicht zutrift, läuft es wieder in die scanf-anweisung rein. scanf liest da jetzt das '\n' aus, das in den default-Zweig der switch-anweisung führt. Die Lösung des Problems besteht darin, den Eingabepuffer, oder Eingabestream zu leeren. Dazu schreibst Du hinter der scanf-Anweisung
Damit wird der Eingabestream geleert, was in diesem Fall bedeutet, dass das '\n', das da noch drin steht, verworfen wird. (@Beefy: Alles richtig, oder hab ich was vergessen? )
Dann noch ein paar Kleinigkeiten: Im zweiten case-Zweig, also case '2' in der zweiten for-schleife steht:
C++: |
for (i2=1,a; i2<=a; i2++)
|
Da muss mit dem a noch irgendwas passieren, sonst kracht es früher oder später.
Vor dem Beenden des Programms solltest Du die benutzte Datei noch schliessen, und weil main ja was zurück geben soll, musst Du es auch was zurückgeben lassen. Das heisst also, das Du das hier noch einfügen solltest:
C++: |
fclose (datei); return 0;
|
Hans -- Man muss nicht alles wissen, aber man sollte wissen, wo es steht. Zum Beispiel hier: Nachdenkseiten oder Infoportal Globalisierung. |