ceccoggi
26-08-2004, 13:43
Apro questo 3d perchè è da troppo tempo che mi porto avanti il problema che sto per esporvi.
Nei classici esercizi o temi d'esame che svolgo all'uni, mi trovo sempre davanti a uno o + file di testo da aprire, e da inserire in un'opportuna struttura dati. Nel caso d'esempio che vi porto
ho nella prima riga il numero di elementi che devo inserire nella mia struttura (quindi sapendo il numero di elementi mi creo sempre un vettore con la funz "calloc"), e in seguito, in ciascuna riga, i dati riferiti a ciascun elemento. Sempre nel mio esempio, i dati riferiti a ciascun elemento sono un ipotetico peso in quintali di colli da trasportare.
Ora io mi sono creato la classica funzione caricafile() nella quale gli passo il vettore sul quale inserire i miei elementi e un intero nprod - per riferimento - nel quale memorizzare la lunghezza di questo vettore. Il problema è che ancora non ho capito bene come passare sto vettore alla funzione, infatti all'interno della funzione lo carico x bene di tutti i suoi elementi,ma quando torno nel main, il suo contenuto è sputtanato, quindi sicuramente l'ho passato male. Il problema è che ho provato a passarlo in diversi modi, ma il risultato è sempre stato lo stesso...
Vi mando il codice che ho scritto, e visto che sarà sicuramente una cavolata per molti di voi, chiaritemi il mio problema una volta x tutte!
codice:
#include <stdio.h>
#include <stdlib.h>
typedef struct{
int peso;
int preso;
int cam;}carro;
void caricafile(carro *vett, int *nprod){
FILE *fp;
int i;
char nomefile[20];
printf("Inserisci il nome del file da aprire: ");
scanf("%s", nomefile);
if( (fp=fopen(nomefile, "r")) !=NULL){
fscanf(fp, "%d", nprod);
vett =(carro *)calloc((*nprod), sizeof(carro ));
for(i=0;i<(*nprod);i++)
fscanf(fp, "%d", &(vett[i].peso));
}
}
void main(){
carro *vett;
int nprod = 0;
caricafile(vett, &nprod);}
file di esempio:
6
20
70
80
50
90
30
Grazie mille
Nei classici esercizi o temi d'esame che svolgo all'uni, mi trovo sempre davanti a uno o + file di testo da aprire, e da inserire in un'opportuna struttura dati. Nel caso d'esempio che vi porto
ho nella prima riga il numero di elementi che devo inserire nella mia struttura (quindi sapendo il numero di elementi mi creo sempre un vettore con la funz "calloc"), e in seguito, in ciascuna riga, i dati riferiti a ciascun elemento. Sempre nel mio esempio, i dati riferiti a ciascun elemento sono un ipotetico peso in quintali di colli da trasportare.
Ora io mi sono creato la classica funzione caricafile() nella quale gli passo il vettore sul quale inserire i miei elementi e un intero nprod - per riferimento - nel quale memorizzare la lunghezza di questo vettore. Il problema è che ancora non ho capito bene come passare sto vettore alla funzione, infatti all'interno della funzione lo carico x bene di tutti i suoi elementi,ma quando torno nel main, il suo contenuto è sputtanato, quindi sicuramente l'ho passato male. Il problema è che ho provato a passarlo in diversi modi, ma il risultato è sempre stato lo stesso...
Vi mando il codice che ho scritto, e visto che sarà sicuramente una cavolata per molti di voi, chiaritemi il mio problema una volta x tutte!
codice:
#include <stdio.h>
#include <stdlib.h>
typedef struct{
int peso;
int preso;
int cam;}carro;
void caricafile(carro *vett, int *nprod){
FILE *fp;
int i;
char nomefile[20];
printf("Inserisci il nome del file da aprire: ");
scanf("%s", nomefile);
if( (fp=fopen(nomefile, "r")) !=NULL){
fscanf(fp, "%d", nprod);
vett =(carro *)calloc((*nprod), sizeof(carro ));
for(i=0;i<(*nprod);i++)
fscanf(fp, "%d", &(vett[i].peso));
}
}
void main(){
carro *vett;
int nprod = 0;
caricafile(vett, &nprod);}
file di esempio:
6
20
70
80
50
90
30
Grazie mille