Чтение с плавающей точкой, используя scanf в c

у меня есть структура, которая содержит переменную с плавающей точкой,

struct MyStruct{
    float p;
}newMyStruct;

И я читаю значение в нем, используяscanf

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

Проблема в том, когда я печатаю его, используяprintf("%f",newMyStruct.p) он печатает «0,000000». Также я получаю предупреждение о том, что arugment является двойным, в то время как формат ожидает, что он будет плавающим (предупреждение дляscanf("%f",&(newMyStruct.p)); заявление). Когда я меняюscanf() синтаксис дляscanf("%0f",&(newMyStruct.p));,printf("%0f",newMyStruct.p); печатает значение с плавающей точкой правильно, но компилятор выдает другое предупреждение (что связано с точностью, равной 0). Такжеprintf("%2f",newMyStruct.p) печатает число с плавающей точкой в другом формате.

Итак, мой вопрос: как мне избавиться от всех этих предупреждений и прочитать правильную переменную типа float, которая также может быть правильно напечатана.

У меня нет доступа к ноутбуку, на котором я обычно пишу код, и, следовательно, я не могу предоставить надлежащие предупреждения.

Ответы на вопрос(1)

Ваш ответ на вопрос