Eingabe Problem (Fehlervermeidung)
-
Ich brauche für ein C Programm (Kreisberechnung) eine Funktion über die der Benutzer die Werte des Kreises eingeben kann.
Hierfür habe ich folgende Datei entwickelt/geklaut....#include <stdio.h>
double lese_f(void)
{
double zahl;char zeile[80];
gets(zeile);
sscanf(zeile, "%lf", & zahl);
return zahl;
}Das Problem an der Sache ist das der User ja auch Buchstaben oder so eingeben kann was erst mal kein Problem für die Funktion darstellt das eigentliche Programm aber natürlich nicht mit rechnen kann.
Kann mir jemand einen Tip geben wie ich die Funktion umschreiben muss das sie solange um erneute Eingabe bittet bis eine Zahl (double) eingegeben wurde.Schon mal Danke
-
Ich hab dir ne selbstgeschriebene Funktion:
double onlydouble(void) //Liest nur double, float oder int Werte und gibt diese als double Wert zurück { char text[80]={0}; char buf; int x=0,z=0; while(x!=79) { fflush(stdin); if(buf==13) { break; } buf=getch(); if((buf>='0'&&buf<='9')||(buf=='.'&&z==0)||(buf==','&&z==0)||(x==0&&buf=='-')) { if(buf=='.'||buf==',') { z=1; if(buf==',') { buf='.'; } } text[x]=buf; printf("%c",buf); x++; } } return(atof(text)); }
hoffe das hilft dir!
mfg hohesC