I need help with the following problem:
Given an array arr of structs
typedef struct
{
    char name[20];
    float amount,price;
}product;
Print the longest subarray of elements from array arr such that the arr element has greater or equal price than some value which is read.
Function to check if element has greater or equal price than a value is given as an argument of a function void subarray(product *arr,int n,int (*check)(product * ,float ),
        product *newArr,int *len_newArr,float value)
where newArr is the output subarray.
Here is my code:
#include<stdio.h>
#include<stdlib.h>
typedef struct
{
    char name[20];
    float amount,price;
}product;
void subarray(product *arr,int n,int (*check)(product * ,float ),
                product *newArr,int *len_newArr,float value)
{
    len_newArr=0;
    int *current_len;
    current_len=0;
    int i;
    for(i=0;i<n;i++)
    {
        //if condition is true, increment current length of newArr
        //and store that element to newArr
        if((*check)(arr+i,value))
        {
            current_len++;
            newArr[i]=arr[i];
        }
        else
            //begin with the next subarray
            current_len=1;
        //update newArr length
        if(current_len > len_newArr)
            len_newArr=current_len;
    }
    newArr=calloc(*len_newArr , sizeof(product));
    //print the subarray
    for(i=0;i<len_newArr;i++)
        printf("%-19s %6.2f %6.2f\n",newArr[i].name,newArr[i].amount,newArr[i].price);
}
int check(product *pr,float value)
{
    if(pr->price >= value)
        return 1;
    return 0;
}
void inputProduct(product *pr)
{
    printf("name: ");
    scanf("%s",pr->name);
    printf("amount: ");
    scanf("%f",&pr->amount);
    printf("price: ");
    scanf("%f",&pr->price);
}
int main()
{
    int n,i;
    product *arr,*newArr;
    int len_newArr;
    float value;
    do
    {
        printf("n = ");
        scanf("%d",&n);
    }
    while(n<1);
    arr=malloc(n * sizeof(product));
    newArr=calloc(n,sizeof(product));
    for(i=0;i<n;i++)
    {
        printf("%d. product: \n",i+1);
        inputProduct(arr+i);
    }
    printf("value: ");
    scanf("%f",&value);
    subarray(arr,n,&check,newArr,&len_newArr,value);
    return 0;
}
The program gives warnings assignment makes pointer from integer without a cast at line 
    //begin with the next subarray
    current_len=1;
and comparison between pointer and integer at line
//print the subarray
for(i=0;i<len_newArr;i++)
    printf("%-19s %6.2f %6.2f\n",newArr[i].name,newArr[i].amount,newArr[i].price);
 
     
    