|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Senior Member
Iscritto dal: Dec 2006
Messaggi: 314
|
[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?
__________________
Athlon64 x2 5600 - AsRock ALiveNF5eSata2+ - kingston 2GB ddr2 800 - GeForce 8800gts 320MB |
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
In cosa hai difficoltà ?
Basta scartare i campi che non soddisfano i criteri...leggerli dovrai comunque leggerli tutti. |
|
|
|
|
|
#3 |
|
Senior Member
Iscritto dal: Dec 2006
Messaggi: 314
|
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..
__________________
Athlon64 x2 5600 - AsRock ALiveNF5eSata2+ - kingston 2GB ddr2 800 - GeForce 8800gts 320MB |
|
|
|
|
|
#4 |
|
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Impossibile dirtelo se non so come sono fatti i campi
|
|
|
|
|
|
#5 |
|
Senior Member
Iscritto dal: Dec 2006
Messaggi: 314
|
Codice:
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);
}
}
__________________
Athlon64 x2 5600 - AsRock ALiveNF5eSata2+ - kingston 2GB ddr2 800 - GeForce 8800gts 320MB |
|
|
|
|
|
#6 |
|
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Allora metti in testa un carattere....1 o 0. 1 da prendere, 0 da scartare.
|
|
|
|
|
|
#7 |
|
Senior Member
Iscritto dal: May 2004
Città: Londra (Torino)
Messaggi: 3692
|
Suggerisco di usare XML.
__________________
Se pensi che il tuo codice sia troppo complesso da capire senza commenti, e' segno che molto probabilmente il tuo codice e' semplicemente mal scritto. E se pensi di avere bisogno di un nuovo commento, significa che ti manca almeno un test. |
|
|
|
|
|
#8 |
|
Senior Member
Iscritto dal: Oct 2007
Città: Padova
Messaggi: 4131
|
__________________
As long as you are basically literate in programming, you should be able to express any logical relationship you understand. If you don’t understand a logical relationship, you can use the attempt to program it as a means to learn about it. (Chris Crawford) |
|
|
|
|
|
#9 |
|
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
|
|
|
|
|
|
#10 |
|
Senior Member
Iscritto dal: May 2004
Città: Londra (Torino)
Messaggi: 3692
|
ah!
Se deve scrivere UNA sola istanza di una struttura allora XML forse e' un po' troppo...
__________________
Se pensi che il tuo codice sia troppo complesso da capire senza commenti, e' segno che molto probabilmente il tuo codice e' semplicemente mal scritto. E se pensi di avere bisogno di un nuovo commento, significa che ti manca almeno un test. |
|
|
|
|
|
#11 |
|
Senior Member
Iscritto dal: Dec 2006
Messaggi: 314
|
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
__________________
Athlon64 x2 5600 - AsRock ALiveNF5eSata2+ - kingston 2GB ddr2 800 - GeForce 8800gts 320MB |
|
|
|
|
|
#12 |
|
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
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.
|
|
|
|
|
|
#13 |
|
Senior Member
Iscritto dal: Dec 2006
Messaggi: 314
|
si.. devo capire come fare..
__________________
Athlon64 x2 5600 - AsRock ALiveNF5eSata2+ - kingston 2GB ddr2 800 - GeForce 8800gts 320MB |
|
|
|
|
|
#14 |
|
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
|
|
|
|
|
|
#15 |
|
Senior Member
Iscritto dal: Dec 2006
Messaggi: 314
|
Codice:
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);
}
}
__________________
Athlon64 x2 5600 - AsRock ALiveNF5eSata2+ - kingston 2GB ddr2 800 - GeForce 8800gts 320MB |
|
|
|
|
|
#16 |
|
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
E' semplice, basta un if...pensaci un po', come ho scritto sopra: se l'anno è maggiore di quello cercato allora lo stampi.
|
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 16:54.




















