Sscanf ожидает тип double, хотя должен быть float

Для всех аргументов функции sscanf (1-3) высвечивается

warning C4477: "sscanf": в строке форматирования "%f" требуется аргумент типа "float *", но вариативный аргумент "1" имеет тип "double"

Но почему ожидается тип double, и как исправить данную проблему?

#include <stdio.h>
#include <math.h>


void get_numbers(const char* msg, float nums[3]) {
    char answer[256];

    printf("%s", msg);
    fgets(answer, sizeof(answer), stdin);

    while (sscanf(answer, "%f %f %f", nums[0], nums[1], nums[2]) != 3) {
        printf("Incorrect input. Try again: ");
        fgets(answer, sizeof(answer), stdin);
    }
}


int main(void) {
    const char* msg = "Enter three numbers: ";
    float nums[3];
    float summ;

    get_numbers(msg, nums);

    summ = nums[0] + nums[1] + nums[2];

    printf("Square root of the sum of numbers = %f", sqrt(summ));

    return 0;
}

Ответы (1 шт):

Автор решения: KoVadim

Уже неоднократно писалось, что *scanf функции требуют указателей, а не просто значений. Добавление нескольких амперсандов решает Вашу проблему

while (sscanf(answer, "%f %f %f", &nums[0], &nums[1], &nums[2]) != 3)
→ Ссылка