Kurze Frage
-
MSDN meint unter anderem:
MSDN schrieb:
A format string for a printf or scanf function contained a floating-point format specification and the program did not contain any floating-point values or variables.
Also wohl nur das %.2i in %.2f geändert.
Reicht da dann schon 100.0 statt 100 ?
-
"%.02i" ist schon in sich selbst falsch und mit %f wird ein float erwartet -> int/int*int ist kein float
also 100.0 könnte reichen. Aber ich würde Verbrauch/(float)Kilometer*100 schreiben... wer merkt sich schon solche Auswertungsreihenfolgen.
-
MrMokey schrieb:
Irgendwas konnte da ja nicht stimmen und als ich es dann mit double probiert habe kam der runtime error 6002.
Du hast nicht etwa Visual Studio 6 oder ein ähnlich altes Urvieh am Start?
Ich kann mich noch sehr gut erninnern, das ist gute 10 Jahre her, dass ich auch diesen Fehler hatte.
Es reichte dann tatsächlich z.B.double a = 0.0;
anstatt
double a
zu schreiben, so wie es hier erkärt wird:
http://computer.wer-weiss-was.de/programmieren-c/fehler_bei_scanf_in_visual_c-1507581.html
-
Erstmal vielen Dank für die Antworten und nein es ist kein "Uraltvieh"
Die doubleversion beinhaltet einfach die geänderten %lf und natürlich das geänderte double.
Der runtime error hat sich mitlerweile scheinbar verflüchtigt - aus welchen Gründen auch immer - und nun habe ich geändert was ihr wolltet.
Die ausgabe bleibt die Gleiche.
Hier nochmal der Code:/* Bestimmung des Verbrauchs eines Kraftfahrzeugs */
#include <stdio.h>
double Kilometer , Verbrauch ;
main() {
printf("\n\n\t Verbrauchsrechner");
printf("\n Bitte gefahrene Kilometer eintragen : ");
scanf("%lf" , &Kilometer);
printf("\n Bitte verbrauchten Kraftstoff eintragen : ");
scanf("%lf" , &Verbrauch);
printf("\n Der Verbauch des Fahrzeugs auf 100 km beträgt : %.2lf" , Verbrauch/Kilometer*100.0);
return 0;
}
-
MrMokey schrieb:
Die ausgabe bleibt die Gleiche.
soll heißen?
gibts noch probleme?
-
Mal bei printf das l beim %.2lf weglassen.
Also nur %.2f
-
Danke das war anscheinend das Problem!
Ist beantwortet
-
DirkB schrieb:
Mal bei printf das l beim %.2lf weglassen.
Also nur %.2fund warum hat das nun geholfen?
-
Weil der Formatspecifier bei printf für float und double %f ist. Das Verhalten von dem l %lf ist erst seit C11 definiert, mit: Hat keinen Effekt.
-
Mist, da fehlt ein bei
Das Verhalten von dem l (ell) bei %lf ist erst seit C11 definiert, mit: Hat keinen Effekt.