I primi problemi che avevo riguardavano proprio l'indice size-1 perché non avevo proprio capito che rappresentasse l'ultima cifra dell'array quindi , per come volevo fare io, per terminare con -2 ftp dovevo solo modificare il ciclo while![]()
L'altra domanda riguarda l'utilizzo di malloc e realloc .. Non ho chiara la differenza e non capisco perché in questo esercizio non avrei potuto usare malloc ..? Per cercare di capire meglio l'utilizzo di realloc ho fatto un altro esercizio, con output uguale a quello precedente ma ho capito ancora meno
codice:#include <stdio.h> #include <stdlib.h> int main () { int val,i; int size=0; int * v = NULL; int * more_numbers; do { printf (" digita un numero intero (0 per terminare: "); scanf ("%d", &val); size++; more_numbers = (int*) realloc (v, size * sizeof(int)); if (more_numbers!=NULL) { v=more_numbers; v[size-1]=val; } else { free (v); puts ("Errore (ri)allocazione della memoria"); exit (1); } } while (val!=0); printf ("Numeri digitati: "); for (i=0;i<size;i++) printf ("%d ",v[i]); free (v); return 0; }

Rispondi quotando