Autor Thema: c: eingabepuffer leeren??  (Gelesen 14970 mal)

0 Mitglieder und 1 Gast betrachten dieses Thema.

afalc060

  • Gast
c: eingabepuffer leeren??
« am: Sa 04.09.2010, 21:21:37 »
Zitat
/* Rechenprogramm */

#include <stdio.h>

int main(void){
   int zahl1, zahl2;
   printf("\n\n\tRechenprogramm (mit Ganzzahlen, ohne Nachkommastellen)\n");
   printf("\nBitte eine Ganzzahl eingeben:");
   scanf("%i",&zahl1);
   printf("Eine weitere Ganzzahl bitte:");
   scanf("%i",&zahl2);
   printf("\n%i + %i = %i", zahl1, zahl2, zahl1+zahl2);
   printf("\n%i - %i = %i", zahl1, zahl2, zahl1-zahl2);
   printf("\n%i * %i = %i", zahl1, zahl2, zahl1*zahl2);
   printf("\n%i / %i = %i", zahl1, zahl2, zahl1/zahl2);
   printf("\n%i %% %i = %i", zahl1, zahl2, zahl1%zahl2);
   printf("\n\n<Return> zum beenden..");
   getchar();
   return(0);
}

wenn ich beim ersten scanf() zb 20.5 oder anderes eingebe, wird das zweite scanf() übersprungen. wie kann man das verhindern??

edit: getchar() wird auch übersprungen. also auch mit richtiger eingabe..
« Letzte Änderung: Sa 04.09.2010, 22:00:02 von afalc060 »

Offline m0n0

  • Benutzer
  • Beiträge: 984
Re: c: eingabepuffer leeren??
« Antwort #1 am: So 05.09.2010, 12:32:13 »
http://pronix.linuxdelta.de/C/standard_C/c_programmierung_6.shtml

...dort Punkt 6.2

also das hier ist die Lösung, jedenfalls unter meinem Linux, unter anderen systemen führts evt. zu ner endlos schleife ^^:
   while( getchar() != '\n');
« Letzte Änderung: So 05.09.2010, 12:35:31 von m0n0 »

afalc060

  • Gast
Re: c: eingabepuffer leeren??
« Antwort #2 am: So 05.09.2010, 14:22:18 »
die schleife funktioniert. hier mac os x
fflush() tut anscheinend nichts..