Frage zu switch.c
-
Moin Moin,
Bei folgendem Quelltext sollte bei der 2. Frage nach einem Operator verlangt werden, dies is aber nicht der fall, die 2te wird übersprungen undes gibt einen Fehler. Please Help.
Folgender Quelltext funzt nicht, aber er lässt sich compilen.#include <stdio.h> void main() { int a,b; char opera; printf("1.Zahl : "); scanf("%d",&a); fflush(stdin); //Tastaturpuffer leeren printf("Operator(+,-,*,/): "); scanf("%c",&opera); printf("2.Zahl : "); scanf("%d",&b); switch(opera) { case '+' : printf("%d + %d = %d\n",a,b,a+b); break; case '-' : printf("%d - %d = %d\n",a,b,a-b); break; case '*' : printf("%d * %d = %d\n",a,b,a*b); break; case '/' : printf("%d / %d = %d\n",a,b,a/b); break; default : printf("'%c' ist kein Rechenoperator\n",opera); break; } //Ende switch }
-
Bei mir funktioniert der Code einwandfrei
-
Warum bei mir nicht, kann es sein, weil ich unter Linux arbeite und alles auf UTF-8 umgestellt habe ?
-
vielleicht, weil du einen neuen compiler hast und int main schreiben musst ... ansonsten die fehlermeldung posten.
-
mushroomery schrieb:
Warum bei mir nicht, kann es sein, weil ich unter Linux arbeite und alles auf UTF-8 umgestellt habe ?
Ja: weil fflush(stdin) nicht definiert ist nach ANSI C. Windows hat da eine Erweiterung, Linux nicht. Hier mal exemplarisch zwei alternativen:
1. Du änderst den Eingabecode in
printf("Bitte ausdruck eingeben (Zahl Opertor Zahl) : "); scanf("%d",&a); scanf("%c",&opera); scanf("%d",&b);
2. Du nimmst nicht fflush(stdin), sondern liest alle Zeichen bis zum nächsten newline (zB fgets)
-
Wie kann ich fflush definieren ?
-
mushroomery schrieb:
Wie kann ich fflush definieren ?
für stdin? garnicht. wo soll's denn 'hingeflusht' werden? ein 'flush' geht nur für ausgabe-puffer (alles sofort ausgeben). eingangspuffer kann man höchstens löschen aber nicht 'flushen'
-
mushroomery schrieb:
Warum bei mir nicht, kann es sein, weil ich unter Linux arbeite und alles auf UTF-8 umgestellt habe ?
Hättest du ja auch gleich mal erwähnen können
-
leere den puffer mit
while(getchar()!='\n');