schleifenproblem
-
hallo,
ich hab ein problem bei diesem programm"
/* Programm zur Berechnung der Abschreibungs- und Restbuchwerte */
#include <stdio.h>main() {
char ende;
do {
....
printf("\n\nWollen Sie wirklich beenden?(j/n): ");
scanf("%c",&ende);} while(ende = 'n');
}
ich hab jetz den programmteil rausgelassen da er zu lang ist....nun hab ich ein problem...ich kann am ende der schleife nichts einfeben(scanf) und deshalb startet das programm neu oda beendet ganz...hat jemand eine idee was hier falsch is...fals ihr den gnazn code wollt schreibt mir eine mail an: gerhard.alt@o2online.de
danke scho im vorraus
-
du machst am ende eine zuweisung und keinen vergleich:
= zuweisung
== vergleich
-
ja gut das ist jetz ein kleiner fehler!!
aber wenn ich das programm starte wird es am ende der schleife wieder automatisch beendet!! ich kann nicht mal was eingeben! woran könnte das liegen?
-
while (ende='n') da wird ende n zugewiesen, du willst hier aber vergleichen, das passiert aber nicht weil er ende n zuweist und dann die schleife verläßt.
korrekt wärewhile ('n'==ende)
Hier würde dir sogar der Compiler sagen das du eine Fehler gemacht hast da
while ('n'=ende)
versuchen würde einer Konstanten einen neuen Wert zuzuweisen und das ist unzulässig
-
korrekt wäre
while ('n'==ende)
das laeuft auf das gleiche hinaus... tut es bei mir jedenfalls
-
dann lass doch mal eines von den beiden Gleichheitszeichen weg! :p
-
das liegt daran, dass du den Tastaturpuffer nciht gelöscht hast, bind mal vor deinem scanf ein
fflush(stdin);
ein. Dann sollte es gehen!
Lyrix
-
afaik führt fflush bei inputstreams zu undefiniertem verhalten, mann
sollte es nur für stdout benützen.
Alternativ solltewhile(getchar()!='\n');
reichen.
-
danke an alle antworten ... wenn ich aber
while('n'==ende);
eingebe, passiert wieder nichts.
die letzte möglichkeit von "curry-king" funktioniert!
danke