View Full Version : [c] Scrittura e lettura di strutture da file
Ciao a tutti.
Dovrei realizzare un programma che scriva una struttura su un file e poi leggere da file soltanto i campi della struttura che soddisfino certi criteri.
Sapreste darmi qualche dritta?
In cosa hai difficoltà ?
Basta scartare i campi che non soddisfano i criteri...leggerli dovrai comunque leggerli tutti.
si ma non so come fare per scartare i campi che non mi interessano..
Stavo pensando di inserire all'inizio di ogni riga del file il nome del campo per poi scartare tutta la riga che appartiene al campo da ignorare..
Impossibile dirtelo se non so come sono fatti i campi
typedef struct libro{
char autore[20];
char titolo[20];
int anno;
} libro;
void scriviFile()
{
libro elenco[5];
FILE *fp = fopen("archivio.txt","w");
int i;
for(i=0; i<5; i++)
{
fprintf(fp,"%s %s %d",elenco[i].autore, elenco[i].titolo, elenco[i].anno);
}
}
Questa è una bozza del codice. Ho un array di tipo libro da stampare su file
Allora metti in testa un carattere....1 o 0. 1 da prendere, 0 da scartare.
banryu79
03-02-2009, 13:38
Suggerisco di usare XML.
Per così poco?
Suggerisco di usare XML.
Boh...se gli serve solo quello imho è come sparare ad un passerotto con un cannone :D
Io supponevo che avesse come vincolo di mantenere un file di testo leggibile, altrimenti avrei puntato su un file binario.
ah!
Se deve scrivere UNA sola istanza di una struttura allora XML forse e' un po' troppo...
in pratica dopo aver scritto l'array di strutture su file devo stampare solo i titoli dei libri usciti dopo una certa data ma non so proprio come fare :confused:
in pratica dopo aver scritto l'array di strutture su file devo stampare solo i titoli dei libri usciti dopo una certa data ma non so proprio come fare :confused:
Ma allora non devi assolutamente mettere niente nel file. Leggi un record dal file, se la data è maggiore di quella cercata allora lo stampi, altrimenti passi al record successivo.
si.. devo capire come fare.. :)
si.. devo capire come fare.. :)
Stamparli tutti ti riesce ? Se ti riesce allora basta un if...identico a come l'ho scritto io a parole sopra.
void scriviFile()
{
int i;
libro elenco[5];
for(i=0; i<5; i++)
{
printf("Autore\tTitolo\tAnno\n");
scanf("%s %s %d", &elenco[i].autore, &elenco[i].titolo, &elenco[i].anno);
}
FILE *fp = fopen("archivio.txt","w");
for(i=0; i<5; i++)
{
fprintf(fp,"Autore : %s Titolo : %s Anno : %d\n",elenco[i].autore, elenco[i].titolo, elenco[i].anno);
}
}
Questo è il codice con cui scrivo la struttura nel file ma non so come fare l'if per selezionare i campi da stampare
E' semplice, basta un if...pensaci un po', come ho scritto sopra: se l'anno è maggiore di quello cercato allora lo stampi.
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.