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äre

    while ('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



  • @Moh

    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 sollte

    while(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 😉 😉


Anmelden zum Antworten