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)