Si .. cmq non ho capito dove sbaglio perchè facendo un'altro esercizio crasha anche su numeri piccoli
/*3.2 Rovescia - p2
L’input è dato da una sequenza di numeri terminata da 0;
non potendo prevedere quanti numeri verranno inseriti, il vettore andrà ridimensionato
man mano: partite da una dimensione fissata piccola (es: 2) e raddoppiate la
lunghezza del vettore ogni volta che questo si riempie
*/
#include <stdio.h>
#include <stdlib.h>
int *my_alloc(int i);
int *my_realloc(int *p, int size);
int contaelem(int *p);
int main (void)
{
int *a, num=2,i=0, numletto;
a=my_alloc(num);
printf("Inserisci una sequenza di numeri terminata da zero 0");
do
{
scanf ("%d", &numletto );
if (i==(num-1))
{
a=my_realloc(a,num*2);
num*=2;
}
//num=contaelem(a);
a[i]=numletto;
i++;
}while (numletto!=0) ;
num=contaelem(a);
for (i=num-1; i>=0;i--)
printf("\n valore %d=>%d\n", i, a[i]);
free(a);
return 0;
}
//funzioni
int *my_alloc(int i)
{
int *p;
p=malloc(i * sizeof(int));
if (p==NULL)
{
printf("Memoria allocata non suff!");
exit(EXIT_FAILURE);
}
else
return p;
}
int *my_realloc(int *p, int size)
{
int *pnew;
pnew=realloc(p,size+1);
if (pnew==NULL)
{
printf("memoria non suff");
exit(EXIT_FAILURE);
}
else return pnew;
}
int contaelem(int *p)
{
int *arr, elem=0;
arr=p;
while (arr[elem]!='\0')
elem++;
return elem;
}