Bei Eingabe von Buchstaben dreht folgendes Programm durch....
-
#include "stdafx.h" #include "windows.h" int main () { double flache, gesamt=0.0; int anzahl=1; printf("\tWOHNFLÄCHENBERECHNUNG\n \tbeenden mit 0\n\n"); printf("Bitte fläche des %i. Raumes Eingeben >",anzahl); scanf("%lf",&flache); while (flache > 0.0) { gesamt = gesamt + flache; anzahl = anzahl + 1; printf("Bitte fläche des %i. Raumes Eingeben >",anzahl); scanf("%lf",&flache); } printf("\nAnzahl der Zimmer = %i",anzahl-1); printf("\nGesamtflaeche = %.2lf qm",gesamt); anzahl=anzahl-1; printf("\nDurchschnittliche Zimmergroese = %.2lf\n\n\n",gesamt/anzahl); system("PAUSE"); }
^^dieses Programm führt bei Eingabe von Buchstaben für die Fläche des Raumes allem anschein nach immer wieder die while Schleife aus. Ich bin noch nicht so bewandert in C. Mir ist klar das man für eine Fläche keine Buchstaben eingibt. Doch was kann ich machen das bei eingabe von Buchstaben eine Fehlermeldung ausgegeben wird und das Programm sich nicht in der Schleife aufhängt?
Danke für eure Antworten.
-
Gehts hier um C?
Dann bist Du hier in der falschen Kategorie.Also wie das im C gehen sollte habe ich keine Ahnung, aber im C++ löse ich das mit...
if (cin.fail ()) { cin.ignore (); cin.sync (); cin.clear (); }
Wer weiß vielleicht läuft das ja auch unter C...
-
Schau mal hier bei "Return Value".
btw:
Das hier ist das C++ und nicht das C Unterforum.
-
Ok sorry. Danke erstmal für die Antowrten. Das könnte ja dann hier jemand verschieben. DANKE!
-
Dieser Thread wurde von Moderator/in SeppJ aus dem Forum C++ (auch C++0x) in das Forum C (C89 und C99) verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.
-
int liesDouble(double *l) { char s[100],*e; errno=0; fgets( s,100,stdin ); *l=strtod( s,&e ); return (!*e||*e=='\n')&&errno!=ERANGE; } ... double d; if( liesDouble(&d) ) printf("Double: %f",d); else fputs("fehlerhafte Eingabe",stderr);