PDA

View Full Version : [C] lettura dinamica


bmp
27-05-2010, 23:24
Ciao a tutti, ho un problema.

Come posso leggere da input un certo numero di interi, non specificato, e memorizzare tali valori in un array?

Ad esempio, la riga da leggere è: 2 3 4 5 (termina con invio)

Dovrei memorizzare i 4 numeri in un array, ma non so a priori quanti numeri verranno scritti.

Grazie per l'aiuto!

lupoxxx87
27-05-2010, 23:29
usando puntatori e malloc invece che array di cui dichiari già la dimensione

bmp
31-05-2010, 11:16
Ho provato a scrivere questa funzione, ma non dà risultati corretti, qualcuno può aiutarmi?

int * lettura(int *ident){

char c;
int n = 0;

while((c=getchar())!= '\n'){

while(!isspace(c));

n++;

ident = realloc(ident, n*sizeof(int));

ident[n-1] = c;

printf("%d\n", ident[n-1]);
}


return(ident);


};

Grazie!

Teo@Unix
31-05-2010, 14:09
ok, ma puoi indentare meglio il codice? Altrimenti è difficile aiutarti e avrai meno risposte...

cmq per iniziare io inserirei un controllo per il valore di ritorno di realloc()

coocooche
31-05-2010, 17:16
Ciao a tutti, ho un problema.

Come posso leggere da input un certo numero di interi, non specificato, e memorizzare tali valori in un array?

Ad esempio, la riga da leggere è: 2 3 4 5 (termina con invio)

Dovrei memorizzare i 4 numeri in un array, ma non so a priori quanti numeri verranno scritti.

Grazie per l'aiuto!
Potresti prima farti dare il numero esatto degli elementi del array (diciamo n)e poi far inserire gli elementi (n per la precissione).

int leggiArray() {
int x[]; // il tuo array
int i; // indice
int n; // il numero di elementi del array

printf("Numero di elementi: ");
scanf("%d", &n);
printf("Inserisci %d numeri: ");
for (i=0; i<n; i++) {
scanf("%d", &x[i]);
}
return(n);
}