Sappi che questo è il modo meno efficiente in assoluto, ad ogni modo ecco il codice corretto e commentato
codice:#include <stdio.h> #include <stdlib.h> //non esiste malloc.h //quel void e' buona prassi, ma la questione e' complicata. int* leggi(void) { int *array, n, i; i=0; array = NULL; //array=(int*)malloc(sizeof(int)*i); //non e' necessario allocare spazio iniziale //in ogni caso non allocheresti nulla in quanto i=0; //i++; //non ci sono elementi, lascia i a 0 //scanf("%d", array); //non ha minimamente senso, pensa a quello che fai!!! do{ scanf("%d", &n); ++i; //ti serve un elemento //realloc prende come primo parametro l'oggetto da reallocare array = (int)realloc(array, sizeof(int)*i); //imposti l'ultimo elemento a quello letto //N.B. Puoi usare la sintassi degli array, documentati sul rapporto puntatori-array array[i-1] = n; } while(n!=-99); //prima era totalmente scorretto. return array; } int main (int argc, char*argv[]) { int *a; //devi salvare il valore da qualche parte a = leggi(); //stampiamo giusto per conferma int i = 0; while(a[i] != -99) { printf("%d ", a[i]); ++i; } puts(""); //devi liberare la memoria allocata dinamicamente free(a); return 0; }

Rispondi quotando
