Ciao!
Ho scritto questo codice per la lettura di un file da linea di comando.
Non mi da errori, ma non capisco perchè non mi stampa a video il vettore con i dati che ho passato alla printf.
Vi riporto il codice e il file con i dati:
file.txt
13
07 2 BRA 0
08 5 FRA 3
05 2 USA 1
07 2 POR 3
04 2 ITA 0
10 2 BRA 6
03 5 USA 8
08 5 POR 5
10 1 FRA 8
file.c
// PROVA DEI TUFFI
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <math.h>
#define BUF 500
#define RIGA 50
//definisco la mia struttura dove andrò ad inserire i dati
typedef struct{
int n_tot_concorrenti;
int id;
int n_tuffo;
char id_giudice;
int voto;
}dati;
// funzioni lettura file e stampa risultati
FILE *aprifile(char *nome_file, char *modalita);
dati *leggi_file(FILE *fp, int *n_letti);
void stampa_letti(dati *vet, int n);
int main(int argc, char **argv){
if(argc!=2){
puts("Error input: number file 2 \n");
exit(-1);
}
int numero_letti;
FILE *fp=aprifile(argv[1],"r");
dati *numero=leggi_file(fp, &numero_letti);
int i;
for(i=0; i<numero_letti; i++){
// if(numero[i].id!=0){
printf("%d \n",numero[i].voto);
// }
}
return 0;
}
FILE *aprifile(char *nome_file, char *modalita){
FILE * fp=fopen(nome_file,modalita);
if(fp==NULL){
fprintf(stderr,"impossibile aprire il file %s in modalita %s",nome_file,modalita);
exit(-1);
}
return fp;
}
dati *leggi_file(FILE *fp,int *n_letti) {
int buf=BUF;
int i=0, j=0;
char riga[RIGA];
char *tmp;
*n_letti=0;
dati *vet=(dati*)malloc(buf*sizeof(dati));
tmp=fgets(riga,sizeof(riga),fp);
while(tmp!=NULL){
sscanf(riga,"%d %d %c %d ",&vet[j].id,&vet[j].n_tuffo,&vet[j].id_giudice,&vet[j].voto);
j++;
}
if(j==buf){
buf*2;
if(!(vet=(dati*)realloc(vet,buf*sizeof(dati)))){
*n_letti=-1;
return NULL;
}
}
*n_letti=j;
vet=(dati*)realloc(vet,j*sizeof(dati));
return vet;
}
void stampa_letti(dati *vet, int n){
int i,j;
for(i=0; i<1; i++){
printf("%d %d %c %d ",&vet[i].id,&vet[i].n_tuffo,&vet[i].id_giudice,&vet[i].voto);
}
for(j=0; j<n; j++){
if(vet[j].id!=0){
printf("%d %d %c %d",&vet[j].id,&vet[j].n_tuffo,&vet[j].id_giudice,&vet[j].voto);
}
}
}
Grazie!