Dies ist ein kleiner Taschenrechner, geschrieben in C. Warum wird hier bei der ersten Eingabe der erste Buchstabe verschluckt?
Die erste Operation zb:
12+12=
Ergebnis = 14
Nochmal das gleiche:
12+12=
Ergebnis = 24
Könnt ihr euch das Erklären?
Ich verwende den gcc 3.2.3
Anbei der C-Code
Christoph
Code: Alles auswählen
#include <stdio.h>
#include <ctype.h>
#define FALSE 0
#define TRUE !FALSE
void main ()
{
int fertig; //Schleifenende
char c;
double ergebnis; //Ergebnis, wird durch die Operationen verändert
double zwergebnis; //Zwischenspeicher der für den zweiten Operand benutzt wird
ergebnis = FALSE;
zwergebnis = FALSE;
printf("***************************\nq zum beenden\nc um Speicher zu löschen\nmögliche Operatoren:\n+ - */\n");
printf("***************************\nEingabe nach diesem Muster:\nx+y=\n***************************\n");
fertig = FALSE;
while (!fertig)
{
//scanf("%c", &c);
c = (char)toupper(getchar());
switch (c)
{
case '+': //Addieren
scanf("%lf", &zwergebnis);
//fflush(stdin);
ergebnis += zwergebnis;
break;
case '-': //Subtrahieren
scanf("%lf", &zwergebnis);
ergebnis -= zwergebnis;
break;
case '*': //Multiplizieren
scanf("%lf", &zwergebnis);
ergebnis *= zwergebnis;
break;
case '/': //Dividieren
scanf("%lf", &zwergebnis);
ergebnis /= zwergebnis;
break;
case '=': //Ergebnis ausgeben
printf("ergebnis \t%.3lf\n", ergebnis);
break;
case 'F': //zwergebnis ausgeben
printf("zwergebnis \t%.3lf\n", zwergebnis);
break;
case 'Q': //Programm beenden
case 'X':
return (0);
break;
case'C': //clear ergebnis
ergebnis = FALSE;
zwergebnis = FALSE;
break;
default:
scanf("%lf", &ergebnis);
break;
fertig = TRUE; //Schleifenende
} //Ende switch
} //Ende von while
return (0);
}