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, dassint 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