12.File binari

Transcript

12.File binari
ESEMPIO COMPLETO FILE BINARIO
È dato un file di binario i cui
record rappresentano ! , secondo il seguente formato:
• "#$%&#')( (al più 30 caratteri)
• %&#')( (al più 30 caratteri)
• *+(,**&# (un singolo carattere, - ./- o -102- )
• 3%%&#546,%+3,*&"&6 7 3
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
8,9,:<;&=+9?>@+:&8BAC+D W @HH S @ WXZY E
8,9,:<;&=+9[>@+:&8BAC+DT@UR
>: S C&9,\ XZ]_^ AHCABI@a`cb Y R
8<=D,C+\ bBd+8&bO@eZ=,AHCABI@ R
>: S C&9,\ X X bBf<ChgABI@a`cb Y R Y
8<=D,C+\ bBd+8&bOZ@eLCABI@ R
>: S C&9,\ X X bBf<C&i<@88BAa`cY b Y R
8<=D,C+\ bBd+8&bOZ@ej8B@88BA R
>: S C&9,\ X X bBf<C_kCCAGC+D&8<= Y S 9,Dc`cb Y R
8<=D,C+\ X bBd<lbO?m_@eZD,CCA Y R
:,@&9B;&:,CG
@UR
V
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 non è visualizzabile tramite un
text editor: questo sarebbe il risultato
CREAZIONE FILE BINARIO
È necessario scrivere un programma che lo crei
strutturandolo in modo che ogni record contenga una
8,9,:<;&=+9?>@+:&8BAC+DE
=<F&D:G=,AHCABI@JLKMNOCABI@JLKMNOP8<@88BAJ QNR
S C&9TD,CCAUR
VR
I dati di ogni persona da inserire nel file vengono richiesti
S
all’utente tramite la funzione W @HH @ WXZY che non ha
parametri e restituisce come valore di ritorno la 8,9,:<;&=+9
>@+:&8BAC+D letta. Quindi il prototipo è:
8,9,:<;&=+9?>@+:&8BAC+D W @HH S @ WXZY R
nBop<q<rtsBu<vw+CREAZIONE
xBytuotz
FILE BINARIO
nBop<q<rtsBu<vw+xBytur_oj~ { |,}
xBy_s,q<y€<v<<xzBpB‚&ƒ { |,}
q ‚<Pq_z_„BpBzt…v† ‡<ˆ‰ p_zt…v† ‡<ˆ,‰ xv,x_xtz† ‹&‰Œ
o|p,y‚BpBp_zŒ
Š
Š
Œ
ŽxBy_s,q<y€<v<<xzBpB‚?rvB„B„,o_rvL+Œ
…‚,opL,ƒ
Œ5xBy_s,qBy€,v<<xtzBpB‚PvŒ5op,y otpBv_˜™Œ
‘,˜ ’t“_”–
z€,vB•p—  šj€,vBz€+rtv u<‚,y<›
~ +Œ —
— — oBrvžŸ opBv {
Š
L
œ

œ
 | ƒ v_˜,<rvBoB„B—yv„,o v<¡jvrLxB+oBŒ ¢v_z  xBy_ts,q<y€,vBBxzBpB‚+ ˆ +Œ
€—  Bop,y  p Š opBvž—  ¤ ˜ˆ
˜™<¨ +ŒŠ Š —
x_q‚Bp —  œju £ ‘ ¡ opBv+’+Œ Š¦¥<§
œ
—
—
q<rŽ z,xv +Œ œt© œŠ
—
—
Ž
ESEMPIO COMPLETO FILE BINARIO
Ora si vuole scrivere un programma che
• legga record per record i dati dal file
! • ponga i dati in un array di
!
1
®
!
¬ ¯ °& & && ±
• ª &«¬ ­
rossi >˜ ÿÿ @ˆ ˘ T ´ —8˘ ˚ ¨ ¯
â3
mario ˜ ˜ ôܯ _˜ ˜ ôܯ Aw O˜ Fˆ _˜ ¯
Dݯ M ¯
¨ ¯ ¨ ¯ nuinH2ô1¨ ô1˜ ô1
1
ESEMPIO COMPLETO FILE BINARIO
1) Definire una struttura di tipo ²³´
µ
""#¶L¶ (¦4(,·Z6 %6 ¶ (/¸%+3/¹º+»+¼½º¾3+43,7 7 3¾3¦#&*¿6 7 3¶ (/6<43,7Z6
(À (%&",3,7Z6 Á
• ÂtÃ<Ä,ÅÃ,ÆÇ → array di 30+1 caratteri
• Å_Ã,ÆÇ → array di 30+1 caratteri
• ÈÇtÈtÈ_Ã → array di 1+1 caratteri
• É_ÅBÅ_ÃÊ,ËtÅ_ÉtÈÂ_Ë Ì É → un intero
ÍÎÏÐÑÎÓÒUÔÏUÍÕÖ×Ø
Ñ&ÙU×ÏÚÑÕÛÖUÕÜÔ/ÝtÞßàáTÖÕÜÔ5ÝtÞßUàáaÍÔUÍÍÕ)Ýâàã
ä ÖÎå×ÖÖÕ¾ã
æ ã
ESEMPIO COMPLETO FILE BINARIO
4) leggere i record dal file, e porre i dati di
ogni persona in una cella dell’array
-/.0"12.3547678:9 ;;673<1>= 6>= 1?@?BA:3<6DC
EF ºHG»IJKML<NOOPQ EF ºRK E
S Q EF º F Q 0T
UVXWGZY:[
F
E
S byte
• legge dal file elementi, ognuno grande K
ESEMPIO COMPLETO FILE BINARIO
2) definire un array di ³²çèÚ²³´
3) aprire il file in lettura
ÜU× ä Ö éêëØ
ÍÎÏÐÑÎÓÒUÔÏÍÕÖ×åì ÝLíî,ïðàã
ñ î&òóôöõå÷øõÕ&ÒUÔցéBù_ÒUÔÕ&ÒúÔ)ûtü×ÎùáýùÏ&þðùêÿã
ä õ éZõ÷÷ òòêëØ
æ
æ
"!#$&%
'(
)*
+'&%%',#!
ûûû
ESEMPIO COMPLETO FILE BINARIO
-/.Di6kj<673l= 14:47173<1g6"m ² C
no p qr s
t uwvxsr r u
t s/y
pz{r t |r r |
t s}
|
qp ~{€ sr r |
t ^‚s
tƒT_.
t s~{u
t y
G»IJKML „Q¹ E… I†GL1¹º+»+¼½º‡I»¹† F JZY:Q<ƒT_./QˆGZY
•
(complessivamente, legge quindi n×dim byte)
• gli elementi da leggere vengono scritti in memoria a
partire dall’indirizzo NOOP
\^]:_a`Db:cDd7egfBh
ESEMPIO COMPLETO FILE BINARIO
‰BŠ‹ŒxŽ{‹g<‘“’”
‰{xŽ•–B—{Š‹k˜™{šBŠB›Zœ 
ž
‰{xŽ•–B—{Š‹k˜™{šBŠ–&ˆŸDœ 
ž
™{š& x—
•š¢¡‹ ™x›{Ž{£¤
•x£ "•&›&¥{Ž{›B¦‹§ ’¨©ª«Ž&›B¦‹§ ’¨
©ª¬™x‹
™&™B›§ ­©®
xŽ
šg£{Ž{Ž&›®
¯®
¦£
xŽD°@±*¤
™{š& x—
•š²¡
‹ ™x›{Ž&£ ³D§ @‘©®¬xŽš"B´”®wµ
B¶&·¸gŒ®
&ŒH°{° Œx´Œ&›x¡
‹{ŽD°@¹@¡
‹{›x¡–B‹Zœ Š£
š¹
ªk¹ˆ BŸ¹x±&±5´{´&º»¶{¶±>¤
¡ xŽ
š&Œ°<¹B&–2Œ{–B‹"Ž{›{Ž2‹
™{{™{šx‹¼ˆ¹&±®«‹x½
{šZ° ¨
±® ¯
¾ {–x‹D° Œ& &‹{£&Š7° ¿5³D§ ©ª<™&{Àx‹{›Œ° ™{š& x—
•š¬¡
‹ ™x›{Ž{£±ª<¨ª@Œ±Bž{”
±
¤
xÁ{Á®
¯
¯
ESEMPIO COMPLETO FILE BINARIO
‰BŠ‹ŒxŽ{‹g<‘“’”
‰{xŽ•–B—{Š‹k˜™{šBŠB›Zœ 
ž
‰{xŽ•–B—{Š‹k˜™{šBŠ–&ˆŸDœ 
ž
™{š& x—
•š¢¡‹ ™x›{Ž{£¤
•x£ "•&›&¥{Ž{›B¦‹§ ’¨©ª«Ž&›B¦‹§ ’¨
©ª¬™x‹
™&™B›§ ­©®
xŽ
šg£{Ž{Ž&›®
¯®
¦£
xŽD°@±*¤
™{š& x—
•š²¡
‹ ™x›{Ž&£ ³D§ @‘©®¬xŽš"B´”®wµ
B¶&·¸gŒ®
&ŒH°{° Œx´Œ&›x¡
‹{ŽD°@¹@¡
‹{›x¡–B‹Zœ Š£
š¹
ªk¹ˆ BŸ¹x±&±5´{´&º»¶{¶±>¤
¡ xŽ
š&Œ°<¹B&–2Œ{–B‹"Ž{›{Ž2‹
™{{™{šx‹¼ˆ¹&±®«‹x½
{šZ° ¨
±® ¯
Œ{ &‹{£&Š7° ³ª<™{{Àx‹{›{Œ° ™{š& x—•š¢¡
‹ {™x›{Ž{£±ª <‘Dª@Œ±®
¯
2