|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Member
Iscritto dal: Nov 2006
Messaggi: 61
|
[C] leggere un file e memorizzare in un array
Ho fatto questa funzione dove ho un file da cui devo leggere dei numeri e memorizzarli in un array, il primo numero corrisponde a quanti elementi ha il file (e quindi non va memorizzato nell'array). Fin qui tutto ok.
Codice:
void readArray( FILE* fin, double *x, int *pN){
fscanf(fin,"%d",pN);
if(*pN>NMAX){
printf(" troppi elementi, al massimo possono essere %d\n",NMAX);
*pN=0;
return;
}
int i;
for (i=0;i<*pN;i++){
fscanf(fin,"%lf",x+i);
}
}
Ora, vorrei fare una cosa credo più semplice ma non ci riesco Devo leggere da un file i numeri che contiene e memorizzarli in un array. Nel file c'è solo l'elenco di numeri che devo poi mettere nell'array. Ho provato a fare così, ma la prima riga mi da tutti 0: Codice:
void readArray( FILE* fin, double *x, int *N){
int i;
for (i=0;i<*N;i++){
fscanf(fin,"%lf",x+i);
}
}
|
|
|
|
|
|
#2 |
|
Member
Iscritto dal: May 2011
Messaggi: 39
|
Allora, il problema è uno: il fatto di non sapere a priori quanti numeri andare ad inserire, ti costringe a dover dichiarare un array di lunghezza generica (la lunghezza massima), ma così facendo se il numero degli elementi è minore ti ritroverai con il resto del vettore pieno di 0. Viceversa, se il numero degli elementi è maggiore, i restanti non verranno memorizzati nell'array. Detto questo, così
Codice:
for (i=0; i< dimensione_vettore; i++)
fscanf(puntatore_al_file, "%d", &vettore[i]); /*l'& puoi anche ometterlo, e ovviamente se i dati non sono interi devi modificare il %d (ad esempio in %lf se sono double)*/
|
|
|
|
|
|
#3 |
|
Member
Iscritto dal: Nov 2006
Messaggi: 61
|
Grazie, funziona!
|
|
|
|
|
|
#4 |
|
Senior Member
Iscritto dal: Apr 2004
Città: La regione del Triplete
Messaggi: 5748
|
Interessa anche a me, ma uso il c++ e so a priori il numero degli elementi che ho sulla riga del file e la dimensione dell'array.
Pensavo di imbastire un ciclo for in cui ad ogni passo leggo un carattere della riga del file, lo converto nel formato che mi occorre, e lo inserisco nella posizione dell'array che ad ogni passo incremento. Non ho ancora scritto il codice. Può andare o si può fare di meglio?
__________________
Trattative felicemente concluse con domienico120, xbax88 ed engiel, ottimi e seri utenti. |
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 17:30.



















