[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!