Lendo o flutuador usando o scanf em c

Eu tenho uma estrutura que contém uma variável float,

struct MyStruct{
    float p;
}newMyStruct;

E eu estou lendo um valor para ele usandoscanf

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

O problema é quando imprimo usandoprintf("%f",newMyStruct.p) imprime "0,000000". Também recebo um aviso que diz que o arugment é duplo enquanto o formato espera que seja float (aviso para oscanf("%f",&(newMyStruct.p)); declaração) .Quando eu mudarscanf() sintaxe parascanf("%0f",&(newMyStruct.p));,printf("%0f",newMyStruct.p); imprime o valor float corretamente, mas o compilador fornece outro aviso (algo relacionado a precisão sendo 0). Além dissoprintf("%2f",newMyStruct.p) imprime o número flutuante em algum outro formato.

Então, minha pergunta é como me livrar de todos esses avisos e ler uma variável float adequada que pode ser impressa corretamente também.

Eu não tenho acesso ao laptop eu geralmente código e, portanto, eu não posso fornecer avisos adequados.