Czytanie pływaka za pomocą scanf w c
Mam strukturę, która zawiera zmienną zmiennoprzecinkową,
struct MyStruct{
float p;
}newMyStruct;
I czytam wartość do niego używającscanf
int main(){
scanf("%f",&(newMyStruct.p));
}
Problem polega na tym, kiedy go używamprintf("%f",newMyStruct.p)
drukuje „0.000000”. Dostaję także ostrzeżenie, że arugment jest podwójny, podczas gdy format oczekuje, że będzie float (ostrzeżenie dlascanf("%f",&(newMyStruct.p));
oświadczenie). Kiedy się zmieniamscanf()
składnia doscanf("%0f",&(newMyStruct.p));
,printf("%0f",newMyStruct.p);
wypisuje poprawnie wartość float, ale kompilator podaje kolejne ostrzeżenie (coś związane z precyzją równą 0). Równieżprintf("%2f",newMyStruct.p)
drukuje liczbę zmiennoprzecinkową w innym formacie.
Tak więc moje pytanie brzmi: jak pozbyć się wszystkich tych ostrzeżeń i przeczytać odpowiednią zmienną zmiennoprzecinkową, która może być również prawidłowo wydrukowana.
Nie mam dostępu do laptopa, generalnie koduję i dlatego nie mogę zapewnić odpowiednich ostrzeżeń.