Il codice QUERY.C propone un esercizio: si tratta di aprire il file di 
testo indicato nella linea di comando, che contiene un elenco di prezzi, 
introdotto dalla parola chiave "Prezzi:" e un elenco di quantit 
disponibili, introdotto dalla parola chiave "Disponibilita:".
Si deve stampare, per i soli articoli disponibili, la coppia 
indice-prezzo dell'articolo.

Il codice QUERY1.C lo fa scorrendo il file tre volte:
1) per contare le disponibilit, cio gli articoli, cos da poter allocare 
  il corrispondente vettore di valori booleani (si noti l'istruzione 
  typedef)
2) per leggere le disponibilit e caricarle nel vettore
3) per stampare i prezzi corrispondenti agli articoli disponibili
Se le disponibilit precedessero sicuramente i prezzi, il terzo scorrimento
potrebbe essere inglobato nel secondo.

Si osservi che:
- Il ciclo while (fscanf(fFileDati,"%s",s) == 1)
             if (strcmp(s,"Disponibilita:") == 0) break;
  d per scontato che il file contenga la parola chiave "Disponibilita:".
- nel conteggio delle disponibilit, while (fscanf(fFileDati,"%d",&d) == 1)
  legge un numero e lo assegna alla variabile d che poi non viene usata; lo 
  scopo  arrestare il conteggio sia se si raggiunge la fine del file sia 
  se si raggiunge qualcosa di diverso da un numero
  (fscanf(fFileDati,"%*d") restituirebbe 0 in questo caso).
- i messaggi di errore vengono indirizzati a stderr; questo consente di 
  redirigere l'output su file, conservando la stampa a video (anzich su 
  file) dei messaggi di errore, oppure di stampare i messaggi di errore su 
  file (sostituendo stderr con un puntatore a file in tutte le chiamate).

E' consigliabile, come esercizio di programmazione, modularizzare il codice 
in funzioni.

Il codice QUERY2.C  identico, ma ritorna al principio del file con la 
funzione rewind, anzich chiudendolo e riaprendolo.

Il codice QUERY3.C si basa sull'osservazione che, se potessimo scorrere 
contemporaneamente la lista delle disponibilita' e quella dei prezzi, non 
avremmo bisogno di un vettore booleano, e quindi non avremmo bisogno di 
contare gli articoli. In effetti, e' possibile aprire piu' volte lo stesso 
file, assegnando lo stream a puntatori diversi, che possono quindi trovarsi 
in posizioni diverse dello stream.
Il codice QUERY3.C usa due puntatori, apre due volte il file, porta il 
primo puntatore dopo la parola chiave "Disponibilita:" e il secondo dopo 
la parola chiave "Prezzi:". Poi scorre l'elenco delle disponibilita' col 
primo puntatore finche' si leggono numeri e ad ogni passo sposta in avanti 
anche il secondo puntatore. Se la disponibilita' letta  positiva, stampa 
il prezzo. Alla fine, chiude entrambi i file.


