absoluter Anfänger hier. Dies ist tatsächlich mein erstes kleines Coding-Projekt, das ich nach einer kleinen Menge an Lesen auf c gemacht habe. Hier ist mein Code.Simple Buffer Clear (c)
#include <stdio.h>
#include <stdlib.h>
int main()
{
float temperature;
float cels, fahr, kel;
printf("Please enter your temperature.\n\n");
scanf("%f", &temperature);
fflush(stdin);
printf("\n\nIs this in fahrenheit, celsius, or kelvin? (type f,c, or k)\n");
char c;
c = getchar();
if (c == 'f')
fahr = temperature;
else if(c == 'c')
cels = temperature;
else if(c == 'k')
kel = temperature;
if (fahr = temperature){
cels = (5*(fahr-32))/9;
kel = cels +273;
}
else if (cels = temperature){
kel = cels + 273;
fahr = ((9 * cels)/5)+32;
}
else if (kel = temperature){
cels = kel - 273;
fahr = ((9 * cels)/5)+32;
}
printf("\nOkay, so the temperatures are:\n");
printf("fahr: %f\tcels: %f\tkal: %f\n" , fahr, cels, kel);
return 0;
}
Der Code für einen Temperaturwert, sollte überprüfen, auf einer Benutzereingabe basierend fragen, ob die Temperatur in Fahrenheit, Celsius oder Kelvin ist, dann findet er, was die Eingangstemperatur in den anderen Bedingungen gleich, und Ausgänge diese Werte.
Ich bin mir ziemlich sicher, dass das Problem, dass der Puffer immer noch einen Wert hat, wenn ich c = getchar verwende, um zu sehen, ob die Temperatur in Fahr, Cels oder Kel ist, daher das Programm nicht warten Sie auf eine Benutzereingabe in dieser Codezeile. Ich weiß jetzt, dass fflush (stdin); ist überhaupt nicht ideal beim Löschen des Puffers und ich bin mir nicht sicher warum (wie gesagt, kompletter Anfänger hier). Irgendwelche Erleuchtung zum Löschen des Puffers oder noch mehr dazu, wie die Puffereingabe funktioniert, würde sehr geschätzt werden. Vielen Dank.
Die zweite if/else-Reihe tut nicht, was Sie erwarten, weil Sie '=' anstelle von '==' zum Testen des Werts – cedrou
verwenden und dann die 2 if/else if in nur eine zusammenführen können: if (c == 'f') {fahr = Temperatur; cels = ...; kel = ...} sonst if (...) – cedrou
Bitte beachten Sie [scanf() belässt die neue Zeile char im Puffer?] (https://stackoverflow.com/questions/5240789/scanf-leaves-the-new- line-char-in-buffer) –