Programabsturz



  • #include <stdio.h>
    #include <stdlib.h>
    #include <conio.h>
    
    char menue();
    
    int main(void)
    {
    
    char menuvar;
    
    do{
    menuvar=menue();
    printf("%c",menuvar);
    }while(menuvar != 'b' || menuvar != 'B');
    getch();  
    
    return EXIT_SUCCESS;
    }
    
    int menue(int menuvar)
    {
        printf("\t\tAuswertung Kraftstoffverbraucht\n");
        printf("\t\t===============================\n\n");
        printf("E - Erfassen Tankbeleg\n");
        printf("A - Auswertung Kraftstoffverbrauch nach Abteilung");
        printf("B - Beenden\n\n");
        printf("Auswahl: ");
        fflush(stdin);
        scanf("%c",&menuvar);
    }
    

    Ich habs auch nich getestet aber noch weng was verändert, denke so muesste es gehn.



  • Lyrix, bei dir kann es nicht funktionieren.

    Aufruf:

    menuvar=menue();
    

    Funktion erwartet aber ein Int.
    Ausserdem fällt mit auf, dass

    int menue(int *menuvar)
    

    bei mir

    void menue(int *menuvar)
    

    sein muss.

    Edit by c.rackwitz: Geschenke ausgeliefert.



  • Ich habe die Funktion umgeändert oben...

    char menue();
    

    Wozu braucht er denn den int Pointer in seiner Funktion? Den bracuht er imo ja gar nicht...

    Ausserdem gibt er nen Charakter zurueck also muss es

    Char
    

    als Rückgabeparameter sein.

    oh merk grad was ich vergessen habe. Ein

    return(manuvar);
    

    muss natürlich noch an den schluss 😉



  • Der liebe TactX bringt euch mal ein paar Geschenke:



  • Sehr sinnvoll, solche Einzeler in CPP Tags zu fassen. Ausserdem finde ich es nicht wirklich ok, wenn mir jemand in meinem Beitrag rumpfuscht, nur um solche Tags reinzusetzen 🙄



  • Naja, ich meinte nicht die Einzeiler 😉



  • thx für die Antworten ich hab jetzt die Version von feigling genommen

    läuft jetzt auch aber wenn ich >>b<< eingeben kommt 2 mal hintereinander

    printf("\t\tAuswertung Kraftstoffverbraucht\n");
        printf("\t\t===============================\n\n");
        printf("E - Erfassen Tankbeleg\n");
        printf("A - Auswertung Kraftstoffverbrauch nach Abteilung");
        printf("B - Beenden\n\n");
        printf("Auswahl: ");
    

    wenn ich aber nun nur

    }while(menuvar != 'b'
    

    schreibe läuft es ohne Probleme!! woran liegt das??

    mfg



  • while(menuvar != 'b' || menuvar != 'B')
    

    ist immer wahr. endlosschleife.
    richtig:

    while(menuvar != 'b' && menuvar != 'B')
    


  • Oder du schreibst "while(toupper(menuvar)!='B');"



  • jo thx jetzt gehts!!

    aber vllt ist dies Frage jetzt ziehmlich dumm aber wieso

    while(menuvar != 'b' && menuvar != 'B')
    

    das wäre dann ja UND also wenn b UND B dann bricht er ab oder seh ich jetzt hier etwas völlig flasch?!?!

    mfg



  • menuvar == 'b': while (false && true) -> while (false) -> abbruch
    menuvar == 'B': while (true && false) -> while (false) -> abbruch
    menuvar == 'x': while (true && true) -> while (true) -> weiter



  • ahh ja jetzt versteh ichs 🙂 stand voll auf dem Schlauch 🙂

    thx für die Hilfe


Anmelden zum Antworten