scanf und Variablentyp
-
Hallo erstmal,
ich bin C-Neuling und sitze an einem eigentlich simplen Programm.
Dummerweise läuft das Ding nicht und nach mehreren Stunden der Fehlersuche wende ich mich nun vertrauensvoll an euch.Das Problem an meinem Code ist, dass der Befehl scanf nicht korrekt ausgeführt wird. Es wird in der Variable nichts hinterlegt und ich hänge in meiner eigenen Schleife fest:
double number; do { printf("\nEnter a number."); if (scanf("%lf", &constant) > 0) break; // exit loop else printf("\nWrong input. Try again."); } while (1); // repeat
Wenn ich meine Variable allerdings als int deklariere und scanf("%d", &constant) benutze läuft das Ding. Nur schneidet es mir dann die Nachkommastellen ab.
Dachte dass es evtl mit der Summe zusamenhängt, die der scanf Befehl ausgibt.Hoffe jemand kann mir einen hilfreichen Hinweis geben.
Grüße, Ninna
-
Was ist denn
constant
? Das klingt ja schon einmal verdächtig, wenn du etwas mit so einem Namen ändern möchtest.
-
Sorry, das war ein versehen...
Der eingelesene Wert soll natürlich der Variable "number" zugewiesen werden.
Der Name der Variable stimmt in meinem Code aber überein - keine Angst. So viel Intelligenz hab ich dann doch noch aufbringen können.lautet also
if (scanf("%lf", &number) > 0) break;
da "number" eine double ist, dachte ich %lf in der Klammer der richtige Befehl zum Einlesen.
-
Klingt, als ob Du bei der Eingabe einen Fehler machst.
Gibst Du eventuell5,6
ein, an Stelle von
5.6
?
-
Nope.
Ich gebe die Kommazahl durchaus mit einem . statt einem , ein.
Trotzdem erfolgt die Fehlerausgabe...
Wie gesagt, wenn ich mit einer int arbeite funktioniert die Sache - bis auf die Nachkommastellen. Die EIngabe wird akzeptiert und der Wert hinterlegt:int number; do { printf("\nEnter a number."); if (scanf("%d", &number) > 0) break; // exit loop else printf("\nWrong input. Try again."); } while (1); // repeat
Nach der umprogrammierung auf double oder float funktioniert's nicht mehr.
Deswegen dachte ich ob vielleicht mit der Eingabekontrolle was nicht stimmt für die Verwendung von Fließkommazahlen!?
-
Da du hier Abschreibfehler drin hast, nehme ich mal an, dass du uns nicht den richtigen Code gezeigt hast. Guck mal hier:
-
Danke für die bisherigen Kommentare!
Hab mir den Code angeschaut. Sieht genau aus wie meiner bis auf die Anfangszeile vom main. Bei mir steht void main (void)
Dennoch kann ich mir nicht vorstellen, dass es daran liegt, denn bei der implementierung mit einer int funktioniert alles problemlos.Mein Problem besteht also nach wir vor.