Используйте указатель void для хранения чисел с плавающей точкой в ​​массиве

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

Код:

int main()
{
int size=5;
float f_array[size];
populate(f_array, size);
// printing array below
}
void populate(void *p, int size)
{
    int i;
    for(i=0; i<size; i++)
    {
        scanf("%f", (((float *)p)+i));
    }
}

Выход:

// ввод пяти чисел с плавающей точкой для хранения в массиве

1.2 // не умеет вводить другие числа и выдает следующий вывод

a[0] = 1
a[1] = garbage value
a[2] = garbage value
a[3] = garbage value
a[4] = 0

1 ответ

Решение
#include <stdio.h>
#define SIZE 5
void populate(void *p, int size)
{
    int i;
    float *array = (float*)p;
    for (i = 0; i < size; i++)
    {
        scanf("%f", &array[i]);
    }
}

int main()
{

    int i;
    float f_array[SIZE];
    populate(f_array, SIZE);
    //print array
}
Другие вопросы по тегам