[c] programma che non stampa
ciao,
sto scrivendo un programma che legge da un file esterno (dati.txt) dei dati e li mette in una struttura..ho un piccolo problema: Ho scritto un ciclo for per stampare a video la struttura(per verificare) ma non stampa nulla!!
e il terminale non mi da' alcun warning o altro...
sto scrivendo un programma che legge da un file esterno (dati.txt) dei dati e li mette in una struttura..ho un piccolo problema: Ho scritto un ciclo for per stampare a video la struttura(per verificare) ma non stampa nulla!!


e il terminale non mi da' alcun warning o altro...
#include <stdio.h> #include <stdlib.h> #include <string.h> typedef struct{ char data[10]; int badge; char ora_in[5]; char ora_out[5]; }INGRESSO; INGRESSO *carica_dati(FILE *fin,int *n); int main(int argc,char **argv) { int n,i; //n=dimensione if(argc <2) printf("Specificare il file da cui leggere le informazioni!\n"); exit(-1); FILE *fin; fin=fopen(argv[1],"r"); if(fin==NULL) printf("Errore nell'apertura del file!\n"); exit(-1); INGRESSO *r=carica_dati(fin,&n); //alla funzione che carica i dati passo: il file letto fin, e la cella a cui mettere la dim. for(i=0;i<n;i++){ printf("%s %d %s %s \n",r[i].data,r[i].badge,r[i].ora_in,r[i].ora_out); } } INGRESSO *carica_dati(FILE *fin,int *n) { INGRESSO *r=(INGRESSO *)malloc(sizeof(INGRESSO)); //memoria per ogni riga char buf[512]; while (fgets(buf,sizeof(buf),fin)!=NULL) { r=realloc(r,(*n+1)*sizeof(INGRESSO)); if(r==NULL) { printf("Errore di memoria\n"); exit(-1); } sscanf(buf,"%s %d %s %s ",r[*n].data,&r[*n].badge,r[*n].ora_in,r[*n].ora_out); (*n)++; } return r; }
Risposte
Non riesco proprio a vedere il problema..mi sembra tutto corretto..qualcuno ha qualche consiglio?
Ho guardato solo velocemente (ho poco tempo), ma utilizzi n prima di inizializzarlo (a zero immagino).
l'ho inizializzato
ma il problema persiste...
int n=0;
ma il problema persiste...

if(argc <2) printf("Specificare il file da cui leggere le informazioni!\n"); exit(-1);
Non hai messo le parentesi per cui l'exit viene eseguito qualsiasi cosa succeda. Il mio compilatore produce diversi warning a riguardo... In ogni caso avresti dovuto dire che non arrivava neanche all'inserimento dei dati. Non avevo infatti guardato quella parte del codice pensando che il problema fosse nello riscrivere a video quello che veniva letto.
P.S. Lo stesso errore è presente anche negli altri if di controllo degli errori.
che errore stupido, è vero ho dimenticato le graffe...di solito le metto anche quando c'è una sola riga nell'if...grazie apatriarca!