Entwickler-Ecke

Off Topic - [C] Tastaturpuffer leeren


David_M - Di 10.05.11 18:16
Titel: [C] Tastaturpuffer leeren
Hi, ich habe ein kleines Problem. Habe einen Code geschrieben der einen einfachen Taschenrechner darstellen soll. Der Operator soll mit getchar() eingelesen werden und mit printf() ausgegeben (dieser Teil ist fest und darf nicht verändert werden). So weit kein Problem allerdings ist der Code nicht auf allen System lauffähig. Die Ausgabe besteht unter Linux(Ubuntu)/Mac OS 10.6 aus einem '\n'. Unter Windows oder Mingw Compiler funktioniert er. Nun probierte ich den Tastaturpuffer zu leeren nur kannte ich nur fflush(stdin) (was ja nicht wirklich zum Puffer leeren da ist) welches unter den 2 System so nicht funktioniert. Deshalb suche ich einen Befehl bzw. eine Möglichkeit das ganze unter ISO C99 Standard zum laufen zu kriegen. Für Hilfe wäre ich sehr dankbar. Vielen Dank im Voraus.


C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
70:
71:
72:
73:
74:
75:
76:
77:
78:
79:
80:
81:
82:
83:
84:
#include <stdio.h>
float Summe(float,float,float);
float Subtraktion(float,float,float);
float Multiplikation(float,float,float);
float Division(float,float,float);
 int main (void)
 {
   float a;
   float b;
   float c;
   char n;
   char Operant;
   do
   {
     printf("Geben sie einen Wert fuer a ein\n");
     scanf("%f",&a);
     printf("Geben sie einen Wert fuer b ein\n");
     scanf("%f",&b);
     printf("Bitte geben sie den Operanten ein\n");
     fflush(stdin);
     Operant=getchar();
     getchar();
     printf("<%c>\n",Operant);
     fflush(stdout);
     if(Operant=='+')
     {
       c=Summe(a,b,c);
       printf("Das Ergebnis von %f %c %f = %f\n",a,Operant,b,c);
     }
     else if(Operant=='-')
     {
       c=Subtraktion(a,b,c);
       printf("Das Ergebnis von %f %c %f = %f\n",a,Operant,b,c);
     }
     else if(Operant=='*')
     {
       c=Multiplikation(a,b,c);
       printf("Das Ergebnis von %f %c %f = %f\n",a,Operant,b,c);
     }
     else if(Operant=='/')
     {
       if(b>0)
       {
         c=Division(a,b,c);
         printf("Das Ergebnis von %f %c %f = %f\n",a,Operant,b,c);
       }
       else
       {
         printf("Division durch 0 ist nicht definiert.\n");
       }

     }
     else
     {
       printf("Das eingegebene Zeichen ist kein definierter Operant.\n");
     }
     printf("nochmal(j/n)?\n");
     n=getchar();
     printf("<%c>\n",n);
     fflush(stdout);
   }
   while (n=='j');
   return 0;
 }
float Summe(float a,float b,float c)
{
  c=a+b;
  return(c);
}
float Subtraktion(float a,float b,float c)
{
  c=a-b;
    return(c);
}
float Multiplikation(float a,float b,float c)
{
  c=a*b;
  return(c);
}
float Division(float a,float b,float c)
{
  c=a/b;
  return(c);
}


Moderiert von user profile iconNarses: C#-Tags hinzugefügt