È dato un file di binario SHRSOHGDW i cui record rappresentano FLDVFXQRLGDWLGLXQD SHUVRQD, secondo il seguente formato: FRJQRPH (al più 30 caratteri) QRPH (al più 30 caratteri) VHVVR (un singolo carattere, 0 o )) DQQRGLQDVFLWD Si noti che la creazione del file binario deve essere fatta da programma, mentre per i file di testo può essere fatta con un text editor. CREAZIONE FILE BINARIO Per creare un file binario e necessario scrivere un programma che lo crei strutturandolo modo che ogni record contenga una VWUXFWSHUVRQD VWUXFWSHUVRQD^ FKDUFRJQRPH>@QRPH>@VHVVR>@ LQWDQQR I dati di ogni persona da inserire nel file vengono richiesti all utente tramite la funzione OHJJLHO che non ha parametri e restituisce come valore di ritorno la VWUXFW SHUVRQD letta. Quindi il prototipo e : VWUXFWSHUVRQDOHJJLHO
CREAZIONE FILE BINARIO Mentre la definizione e : VWUXFWSHUVRQDOHJJLHO^ VWUXFWSHUVRQDH SULQWI &RJQRPH" VFDQIVHFRJQRPH SULQWI?Q1RPH" VFDQIVHQRPH SULQWI?Q6HVVR" VFDQIVHVHVVR SULQWI?Q$QQRQDVFLWD" VFDQIGHDQQR UHWXUQH CREAZIONE FILE BINARIO LQFOXGHVWGLRK! LQFOXGHVWGOLEK! VWUXFWSHUVRQD^ FKDUFRJQRPH>@QRPH>@VHVVR>@ LQWDQQR VWUXFWSHUVRQDOHJJLOH PDLQ^ ),/(IVWUXFWSHUVRQDHLQWILQH I IRSHQ³SHRSOHGDW ZE ZKLOHILQH ^H OHJJLHO IZULWH HVL]HRIVWUXFWSHUVRQDI SULQWI?Q)LQH6, 12 " VFDQIG ILQH IFORVHI
CREAZIONE FILE BINARIO L esecuzione del programma precedente crea il file binario contenente i dati immessi dall utente. Solo a questo punto il file può essere utilizzato. Il file SHRSOHGDW non e visualizzabile tramite un text editor: questo e il risultato rossi > ÿÿ @ˆ T 8 â3 mario ôü _ ôü Aw O Fˆ _ DÝ M nuinh2ô1 ô1 ô1 Ora si vuole scrivere un programma che legga record per record i dati dal file e ponga i dati in un array di SHUVRQH SRLVYROJHUHPRHODERUD]LRQLVXHVVL
&RPHRUJDQL]]DUVL" 1) Definire una struttura SHUVRQD 3RLQHOPDLQ 2) Definire un array di strutture SHUVRQD 3) Aprire il file in lettura 4) Leggere un record per volta, e porre i dati di quella persona in una cella dell array Servirà un indice per indicare la prossima cella libera nell'array. 1) Definire una struttura di tipo SHUVRQD 2FFRUUHGHILQLUHXQDVWUXFWDGDWWDDRVSLWDUHLGDWL HOHQFDWL FRJQRPH array di 30+1 caratteri QRPH array di 30+1 caratteri VHVVR array di 1+1 caratteri DQQRGLQDVFLWD un intero ricordarsi lo spazio per il terminatore VWUXFWSHUVRQD^ FKDUFRJQRPH>@QRPH>@VHVVR>@ LQWDQQR
2) definire un array di VWUXFWSHUVRQD 3) aprire il file in lettura PDLQ^ VWUXFWSHUVRQDY>',0@ +SPDVVLPR',0 SHUVRQH ),/(I IRSHQSHRSOHGDWU LII 18//^ «FRQWUROORFKHLOILOHVLD HIIHWWLYDPHQWHDSHUWR 2) definire un array di VWUXFWSHUVRQD 3) aprire il file in lettura PDLQ^ VWUXFWSHUVRQDY>',0@ ),/(I IRSHQSHRSOHGDWU LII 18//^ SULQWI³,OILOHQRQHVLVWH H[LWWHUPLQD]LRQHGHOSURJUDPPD
4) leggere i record dal file, e porre i dati di ogni persona in una cella dell array &RPHRUJDQL]]DUHODOHWWXUD" LQWIUHDGDGGULQWGLPLQWQ),/(I legge dal fileqelementi, ognuno grandeglpbyte (complessivamente, legge quindi n dim byte) gli elementi da leggere vengono scritti in memoria a partire dall indirizzodggu 8VRIUHDG 4) leggere i record dal file, e porre i dati di ogni persona in una cella dell array &RVDIDUOHJJHUHDIUHDG" / LQWHURYHWWRUHGLVWUXWWXUHXQLFDOHWWXUDSHU',0 UHFRUG IUHDGYVL]HRIVWUXFWSHUVRQD',0I 8QUHFRUGDOODYROWDDOO LQWHUQRGLXQFLFOR L ZKLOHIHRII^ IUHDG Y>L@VL]HRIVWUXFWSHUVRQDI L
4) leggere i record dal file, e porre i dati di ogni persona in una cella dell array 'RYHPHWWHUHTXHOORFKHVLOHJJH" Abbiamo definito un array di VWUXFWSHUVRQD, Y L indice N indica la prima cella libera Y>N@ Tale cella è una struttura fatta di FRJQRPH, QRPH, VHVVR, DQQR ciò che si estrae da un record va direttamente nella struttura Y>N@ GHILQH',0 LQFOXGHVWGLRK! LQFOXGHVWGOLEK! Dichiara la procedura H[LW VWUXFWSHUVRQD^ FKDUFRJQRPH>@QRPH>@VHVVR>@ LQWDQQR PDLQ^ VWUXFWSHUVRQDY>',0@LQWL ),/(I LII IRSHQSHRSOHGDWU 18//^ SULQWI,OILOHQRQHVLVWHH[LW ZKLOHIUHDG Y>L@VL]HRIVWUXFWSHUVRQDI!^ L