Смешанные типы ввода для функции, которая использует va_list - PullRequest
0 голосов
/ 10 апреля 2020

Я хочу написать функцию, которая выделяет динамический c массив значений с плавающей запятой, используя функцию из '' 'stdarg.h' ''. Проблема состоит в том, что входные данные функции содержат смешанные значения с плавающей точкой / int, и после использования '' 'va_arg (va, double)' '' значения int усекаются до 0. Как написать такую ​​функцию, которая для разных типов ввода сохраняет их значения после приведения типа, без приведения каждого веселья вручную c. входной аргумент?

Какой-то код, который я написал:

float *allocVec(int n,...)
{
    va_list va;
    va_start(va, n);
    printf("sizeof %ld\n",sizeof(va));
    float *vector;

    vector = (float*)malloc(n*sizeof(float));

    //this function checks if memory were allocated succesfully
    CheckAlloc(vector);
    for(int i = 0 ;i < n ; i++)
    {
        vector[i] = (float) va_arg(va,double);
        printf("%f \n",vector[i]);
    }
    va_end(va);
    return vector;
}

int main()
{
    allocVec(3,7.2,-1,0);

    return 0;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...