I'm having trouble in memorizing input of undefined length. I searched everywhere but i cannot resolve this problem. I create a personal function for realloc but it doesnt' work. gcc displays an invalid next size error. while if i use directly array=realloc(array,size) it works. this is the code:
#include <stdlib.h>
#include <string.h>
#include <stdio.h>
void my_realloc(int *pointer, int dim){
int *temp = realloc(pointer, dim*sizeof(int));
if(temp != NULL){
pointer = temp;
}
}
int main(){
int *numbers = malloc(sizeof(int)); int input,div,n=-1,size=0;
while(scanf("%d", &input) && input != -1){
++size;
my_realloc(numbers, size);
numbers[++n] = input;
}
printf("insert divider\n");
scanf("%d", &div);
int *result = penultimate(numbers, n, div);
if(result != NULL)
printf("%d", *result);
free(numbers);free(result);
return 0;
}
also the function to find the penultimate multiple crashes due to memory leak
int *penultimate(int *array, int length, int divider){
int *multiples = malloc(sizeof(int)); int index=-1,size_mul=0;
for(int i=0;i<=length;i++){
if(array[i] % divider == 0){
++size_mul;
multiples = realloc(multiples, size_mul*sizeof(int));
multiples[++index]=array[i];
}
}
if (index-1 >= 0){
return &multiples[index-1];
}
return NULL;
}
thank you in advance guys.