Salve a tutti, cercando di utilizzare la funzione "realloc", per risolvere un problema, mi sono imbattuto su un errore di segmentazione, Allora ho deciso di fare un programmino (che pensavo mi riuscisse essendo molto banale) che prendesse da input:
un intero che sarebbe la lunghezza dell'array,
i primi elementi dell'array,
un altro intero che fosse la nuova lunghezza dell'array in modo da aumentare le dimensioni dell'array,
gli altri elementi dell'array.
Infine volevo che mi stampasse tutti gli elementi dell'array, però eseguendo il programma mi da sempre segmentation fault .
Questo è il codice del programma, grazie in anticipo a chiunque saprà dirmi dove sbaglio .
#include <stdio.h>
#include <stdlib.h>
void input_array(int* a, int start, int len);
void output_array(int* a, int len);
int main() {
int* a;
int new;
int len;
printf("Lunghezza array : ");
scanf("%d", &len);
printf("\n");
input_array(a, 0, len);
printf("Nuova lunghezza: ");
scanf("%d", &new);
printf("\n");
//______________________________________________ riallocamento memoria in un nuovo array
a = (int*) realloc(a, new * sizeof(int));
//______________________________________________ nuovo input e output
input_array(a, len, new);
output_array(a, new);
return 0;
}
//___________________________________________________ input array
void input_array(int* a, int start, int len) {
int num;
a = malloc(len * sizeof(int));
printf("Elementi dell\'array:\n");
for (int i = start; i < len; ++i)
{
scanf("%d", &num);
a[i] = num;
}
}
//___________________________________________________ output array
void output_array(int* a, int len){
for (int i = 0; i < len; ++i)
{
printf("%d\n", a[i]);
}
}