Successivo: Esempio di estensione Readfile, Precedente: Esempio di estensione Rev2way, Su: Esempi di estensione [Contenuti][Indice]
L’estensione rwarray
aggiunge due funzioni,
di nome writea()
e reada()
, come segue:
@load "rwarray"
Questo è il modo per caricare l’estensione.
ret = writea(file, vettore)
Questa funzione ha come argomento una stringa, che è il nome del file
sul quale scaricare il vettore, e il vettore stesso è il secondo argomento.
writea()
è in grado di gestire vettori di vettori. Restituisce il
valore uno se completa il lavoro o zero se non va a buon fine.
ret = reada(file, vettore)
reada()
è la funzione inversa di writea()
;
legge il file il cui nome è fornito come primo argomento, riempiendo il
vettore il cui nome è il secondo argomento. Il vettore viene preventivamente
svuotato.
Anche in questo caso, il valore restituito è uno se tutto va bene o zero se
la funzione non va a buon fine.
Il vettore creato da reada()
è identico a quello scritto da
writea()
nel senso che i contenuti sono gli stessi. Tuttavia,
per come è strutturata la funzione, l’ordine di attraversamento del vettore
ricreato è quasi certamente differente da quello del vettore originale.
Poiché l’ordine di attraversamento di un vettore è, per default, indefinito
in awk
, questo non è (tecnicamente) un problema. Se serve che
l’attraversamento del vettore avvenga in un ordine preciso, si possono usare
le funzionalità di ordinamento di un vettore disponibili in gawk
(vedi la sezione Controllare la visita di un vettore e il suo ordinamento).
Il file contiene dati in formato binario. Tutti i valori interi sono scritti in network byte order117. Tuttavia, i valori in virgola mobile a doppia precisione sono scritti come dati binari nativi. Quindi, vettori che contengono solo dati in formato stringa possono essere scaricati da un sistema con un certo ordine di byte e ripristinati su un sistema con un ordine di byte differente, anche se un test al riguardo non è mai stato fatto.
Ecco un esempio:
@load "rwarray" … ret = writea("scaricato.bin", vettore) … ret = reada("scaricato.bin", vettore)
Cioè, nella maniera con cui sarebbero normalmente scritti in un testo, con le cifre più significative del numero contenute nella parte sinistra, e quelle meno significative nella parte destra della rappresentazione binaria del numero.
Successivo: Esempio di estensione Readfile, Precedente: Esempio di estensione Rev2way, Su: Esempi di estensione [Contenuti][Indice]