Float mit scanf auslesen in c

Ich habe eine Struktur, die eine Float-Variable enthält,

struct MyStruct{
    float p;
}newMyStruct;

Und ich lese einen Wert hinein mitscanf

int main(){
    scanf("%f",&(newMyStruct.p));
}

Das Problem ist, wenn ich es mit druckeprintf("%f",newMyStruct.p) es druckt "0.000000". Außerdem erhalte ich eine Warnung, die besagt, dass das Arugment doppelt ist, während das Format erwartet, dass es float ist (Warnung für diescanf("%f",&(newMyStruct.p)); Anweisung) .Wenn ich änderescanf() Syntax zuscanf("%0f",&(newMyStruct.p));,printf("%0f",newMyStruct.p); Gibt den Gleitkommawert korrekt aus, aber der Compiler gibt eine andere Warnung aus (etwas im Zusammenhang mit der Genauigkeit ist 0). Ebenfallsprintf("%2f",newMyStruct.p) druckt die Gleitkommazahl in einem anderen Format.

Meine Frage ist also, wie ich all diese Warnungen loswird und eine richtige Float-Variable lese, die auch richtig gedruckt werden kann.

Ich habe keinen Zugriff auf den Laptop, auf dem ich im Allgemeinen codiere, und daher kann ich keine richtigen Warnungen geben.