Fondamenti di Informatica CDL in Ingegneria Gestionale - A.A. 2011-2012 10. Gestione dei file Ing....

26
Fondamenti di Informatica CDL in Ingegneria Gestionale - A.A. Fondamenti di Informatica CDL in Ingegneria Gestionale - A.A. 2011-2012 2011-2012 10. Gestione dei file 10. Gestione dei file Ing. Ing. Simona Colucci Simona Colucci

Transcript of Fondamenti di Informatica CDL in Ingegneria Gestionale - A.A. 2011-2012 10. Gestione dei file Ing....

Page 1: Fondamenti di Informatica CDL in Ingegneria Gestionale - A.A. 2011-2012 10. Gestione dei file Ing. Simona Colucci.

Fondamenti di Informatica CDL in Ingegneria Gestionale - A.A. Fondamenti di Informatica CDL in Ingegneria Gestionale - A.A. 2011-20122011-2012

10. Gestione dei file10. Gestione dei file Ing. Ing. Simona ColucciSimona Colucci

Page 2: Fondamenti di Informatica CDL in Ingegneria Gestionale - A.A. 2011-2012 10. Gestione dei file Ing. Simona Colucci.

Sistemi Sistemi InformativiInformativiDEE - Politecnico di BariDEE - Politecnico di Bari

Fondamenti di Informatica CDL in Ingegneria Gestionale - A.A. Fondamenti di Informatica CDL in Ingegneria Gestionale - A.A. 2011-20122011-2012

IndiceIndice

• Il file system in C • Principali operazioni sui file (dalla Standard

Library) • Esempi

Page 3: Fondamenti di Informatica CDL in Ingegneria Gestionale - A.A. 2011-2012 10. Gestione dei file Ing. Simona Colucci.

Sistemi Sistemi InformativiInformativiDEE - Politecnico di BariDEE - Politecnico di Bari

Fondamenti di Informatica CDL in Ingegneria Gestionale - A.A. Fondamenti di Informatica CDL in Ingegneria Gestionale - A.A. 2011-20122011-2012

Il file system in CIl file system in C

• La gestione dei file in C avviene tramite un flusso di comunicazione:– Dichiarazione di una variabile di tipo puntatore al file(ad un

oggetto di tipo FILE), che costituirà il riferimento al file per tutto il tempo di apertura del flusso

– Apertura del flusso tramite una funzione di libreria(fopen)– Chiusura del flusso tramite una funzione di libreria(fclose)

• Classificazione del flusso di comunicazione:– binario : sequenza di byte– di tipo testo : sequenza di caratteri suddivisa in linee

terminate dal carattere di newline

Page 4: Fondamenti di Informatica CDL in Ingegneria Gestionale - A.A. 2011-2012 10. Gestione dei file Ing. Simona Colucci.

Sistemi Sistemi InformativiInformativiDEE - Politecnico di BariDEE - Politecnico di Bari

Fondamenti di Informatica CDL in Ingegneria Gestionale - A.A. Fondamenti di Informatica CDL in Ingegneria Gestionale - A.A. 2011-20122011-2012

Il tipo strutturato FILEIl tipo strutturato FILE

• Capace di memorizzare tutte le informazioni necessarie a controllare un flusso

• Possibili campi:• Modalità di utilizzo: lettura, scrittura o lettura e scrittura;• Posizione corrente: punta al prossimo byte da leggere o

scrivere sul file;• Indicatore di errore: registra il presentarsi di un errore di

lettura o scrittura • Indicatore di end-of-file (eof).

• Dichiarazione di variabile:FILE *fp

Page 5: Fondamenti di Informatica CDL in Ingegneria Gestionale - A.A. 2011-2012 10. Gestione dei file Ing. Simona Colucci.

Sistemi Sistemi InformativiInformativiDEE - Politecnico di BariDEE - Politecnico di Bari

Fondamenti di Informatica CDL in Ingegneria Gestionale - A.A. Fondamenti di Informatica CDL in Ingegneria Gestionale - A.A. 2011-20122011-2012

Tabella file apertiTabella file aperti

• Il sistema operativo gestisce una tabella dei file aperti: FILE TabellaFileAperti[MaxNumFileGestibili]E’ un vettore che memorizza le informazioni relative alle

modalità di utilizzo dei singoli file

• L’apertura di un flusso provoca:– la creazione di un nuovo elemento nella tabella con tutte le

informazioni del file aperto– La restituzione alla variabile puntatore definita nel

programma C l’indirizzo di tale tabella

• L’utente provoca la manipolazione indiretta della struttura di tipo file tramite le funzioni di libreria stdio.h, ma solo il sistema operativo manipola i campi

Page 6: Fondamenti di Informatica CDL in Ingegneria Gestionale - A.A. 2011-2012 10. Gestione dei file Ing. Simona Colucci.

Sistemi Sistemi InformativiInformativiDEE - Politecnico di BariDEE - Politecnico di Bari

Fondamenti di Informatica CDL in Ingegneria Gestionale - A.A. Fondamenti di Informatica CDL in Ingegneria Gestionale - A.A. 2011-20122011-2012

I flussi standardI flussi standard

• Automaticamente aperti quando inizia l’esecuzione di un programma:– stdin: associato al file che rappresenta la tastiera del

terminale– stdout: associato al file che rappresenta il video del

terminale– stderr: associato al file che rappresenta il video del terminale

• Sono le variabili puntatore ai descrittori dei file associati con le periferiche, come visto nella macchina di Von Neumann

• Esempio:– printf scrive sul file puntato da stdout– scanf legge dal file puntato da stdin

Page 7: Fondamenti di Informatica CDL in Ingegneria Gestionale - A.A. 2011-2012 10. Gestione dei file Ing. Simona Colucci.

Sistemi Sistemi InformativiInformativiDEE - Politecnico di BariDEE - Politecnico di Bari

Fondamenti di Informatica CDL in Ingegneria Gestionale - A.A. Fondamenti di Informatica CDL in Ingegneria Gestionale - A.A. 2011-20122011-2012

Operazioni di gestione dei fileOperazioni di gestione dei file

• FILE *fopen (nomefile, modalità)modalita possibili: - r: lettura in modalità testo, posizionamento inizio file- w: scrittura in modalità testo, posizionamento inizio file- a: scrittura in modalità testo, posizionamento fine file- rb, wb, ab: r, w, a, in modalità binaria- r+,w+,a+, rb+, wb+, ab+: lettura e scrittura su file con modalità di testo o binaria

• int fclose (FILE *fp) Pone pari a NULL il valore di fp, restituisce 0 o EOF in caso di errori

• int remove (nomefile)• int rename (vecchionome, nuovonome)

Restituiscono 0 in caso positivo, un valore diverso in caso contrario

Page 8: Fondamenti di Informatica CDL in Ingegneria Gestionale - A.A. 2011-2012 10. Gestione dei file Ing. Simona Colucci.

Sistemi Sistemi InformativiInformativiDEE - Politecnico di BariDEE - Politecnico di Bari

Fondamenti di Informatica CDL in Ingegneria Gestionale - A.A. Fondamenti di Informatica CDL in Ingegneria Gestionale - A.A. 2011-20122011-2012

Operazioni di gestione degli Operazioni di gestione degli errorierrori

Nella struttura di gestione di un file aperto sono presenti:

• Un’informazione che tenga traccia della presenza di un errore– int ferror (FILE *fp)

• Un’informazione che dice se si è giunti alla fine del file:– int feof (FILE *fp)

• La possibilità di ripristinare nei campi i valori di default prima dell’errore:– void clearerr (FILE *fp)

Page 9: Fondamenti di Informatica CDL in Ingegneria Gestionale - A.A. 2011-2012 10. Gestione dei file Ing. Simona Colucci.

Sistemi Sistemi InformativiInformativiDEE - Politecnico di BariDEE - Politecnico di Bari

Fondamenti di Informatica CDL in Ingegneria Gestionale - A.A. Fondamenti di Informatica CDL in Ingegneria Gestionale - A.A. 2011-20122011-2012

Operazioni di lettura e scritturaOperazioni di lettura e scrittura

• Lettura e scrittura formattata: si precisa il formato dei dati da manipolare

• Lettura e scrittura di caratteri: accesso per caratteri

• Lettura e scrittura di stringhe: accesso per linee

• Lettura a scrittura di strutture: acceso per blocchi

Page 10: Fondamenti di Informatica CDL in Ingegneria Gestionale - A.A. 2011-2012 10. Gestione dei file Ing. Simona Colucci.

Sistemi Sistemi InformativiInformativiDEE - Politecnico di BariDEE - Politecnico di Bari

Fondamenti di Informatica CDL in Ingegneria Gestionale - A.A. Fondamenti di Informatica CDL in Ingegneria Gestionale - A.A. 2011-20122011-2012

Lettura e scrittura formattataLettura e scrittura formattata

• int printf (stringa di controllo, elementi)

• int scanf (stringa di controllo, indirizzo elementi)• int fprintf (FILE *fp, stringa di controllo, elementi)

• int fscanf (FILE *fp, stringa di controllo, indirizzo elementi)

Page 11: Fondamenti di Informatica CDL in Ingegneria Gestionale - A.A. 2011-2012 10. Gestione dei file Ing. Simona Colucci.

Sistemi Sistemi InformativiInformativiDEE - Politecnico di BariDEE - Politecnico di Bari

Fondamenti di Informatica CDL in Ingegneria Gestionale - A.A. Fondamenti di Informatica CDL in Ingegneria Gestionale - A.A. 2011-20122011-2012

Lettura e scrittura per caratteriLettura e scrittura per caratteri

• int getchar (void)• int putchar(int c)• int getc(FILE *fp)• int fgetc (FILE *fp)• int putc (int c, FILE *fp) • int fputc (int c, FILE *fp)

Page 12: Fondamenti di Informatica CDL in Ingegneria Gestionale - A.A. 2011-2012 10. Gestione dei file Ing. Simona Colucci.

Sistemi Sistemi InformativiInformativiDEE - Politecnico di BariDEE - Politecnico di Bari

Fondamenti di Informatica CDL in Ingegneria Gestionale - A.A. Fondamenti di Informatica CDL in Ingegneria Gestionale - A.A. 2011-20122011-2012

Lettura e scrittura per stringheLettura e scrittura per stringhe

• char *gets(char *s)• int fgets (char *s, int n, FILE *fp)• int puts (char *s) • int fputs (char *s, FILE *fp)

Page 13: Fondamenti di Informatica CDL in Ingegneria Gestionale - A.A. 2011-2012 10. Gestione dei file Ing. Simona Colucci.

Sistemi Sistemi InformativiInformativiDEE - Politecnico di BariDEE - Politecnico di Bari

Fondamenti di Informatica CDL in Ingegneria Gestionale - A.A. Fondamenti di Informatica CDL in Ingegneria Gestionale - A.A. 2011-20122011-2012

/*Legge e mostra sul video il contenuto del file di testo filechar*/#include <stdio.h>

/* Contiene la definizione di EOF, del tipo FILEe le testate delle funzioni che operano su file */

#include <stddef.h> /* Contiene la definizione di NULL */

main(){

FILE *fp;char c;

if ((fp = fopen("filechar", "r")) != NULL)/* Il file viene aperto in lettura con modalità testo */

{while ((c = fgetc(fp)) != EOF)

/* Viene letto e stampato un carattere per volta sino a fine file */putchar(c);

fclose(fp);}else

printf("Il file non può essere aperto\n");}

Esempi con file di testo (1)Esempi con file di testo (1)

Page 14: Fondamenti di Informatica CDL in Ingegneria Gestionale - A.A. 2011-2012 10. Gestione dei file Ing. Simona Colucci.

Sistemi Sistemi InformativiInformativiDEE - Politecnico di BariDEE - Politecnico di Bari

Fondamenti di Informatica CDL in Ingegneria Gestionale - A.A. Fondamenti di Informatica CDL in Ingegneria Gestionale - A.A. 2011-20122011-2012

/*Lettura e scrittura di stringhe (1)*/#include <stdio.h>#include <stddef.h>#include <string.h>#define OK 1#define ERROR 0#define MAXLINE 100

int copiaselettiva(char refstr[]){

char line[MAXLINE];FILE *fin, *fout;

If ((fin = fopen("filein", "r")) == NULL) /* filein viene aperto in lettura con modalità testo */

return ERROR;if ((fout = fopen("fileout", "w")) == NULL)

/* fileout viene aperto in scrittura con modalità testo */{

fclose(fin);return ERROR;

}…

Esempi con file di testo (2)Esempi con file di testo (2)

Page 15: Fondamenti di Informatica CDL in Ingegneria Gestionale - A.A. 2011-2012 10. Gestione dei file Ing. Simona Colucci.

Sistemi Sistemi InformativiInformativiDEE - Politecnico di BariDEE - Politecnico di Bari

Fondamenti di Informatica CDL in Ingegneria Gestionale - A.A. Fondamenti di Informatica CDL in Ingegneria Gestionale - A.A. 2011-20122011-2012

/*Lettura e scrittura di stringhe (2)*/…while (fgets(line,MAXLINE,fin) != NULL)

/* fgets legge da filein al più MAXLINE–1 caratteri e assegna al vettore line i caratteri letti, incluso l'eventuale carattere di

newline, e termina la stringa con il carattere \0 */

if (strstr (line,refstr) != NULL)/* La funzione strstr restituisce la posizione della prima

occorrenza della stringa puntata da refstr nella stringa puntata da line; se la seconda stringa non è contenuta nella prima viene restituito il

valore NULL */fputs(line,fout);

fclose(fin);fclose(fout);return OK;

}

Esempi con file di testo (3)Esempi con file di testo (3)

Page 16: Fondamenti di Informatica CDL in Ingegneria Gestionale - A.A. 2011-2012 10. Gestione dei file Ing. Simona Colucci.

Sistemi Sistemi InformativiInformativiDEE - Politecnico di BariDEE - Politecnico di Bari

Fondamenti di Informatica CDL in Ingegneria Gestionale - A.A. Fondamenti di Informatica CDL in Ingegneria Gestionale - A.A. 2011-20122011-2012

Lettura e scrittura di struttureLettura e scrittura di strutture

• int fread(void *ptr, dimelemento, numelementi, FILE *fp);

• int fwrite(void *ptr, dimelemento, numelementi, FILE *fp);

Page 17: Fondamenti di Informatica CDL in Ingegneria Gestionale - A.A. 2011-2012 10. Gestione dei file Ing. Simona Colucci.

Sistemi Sistemi InformativiInformativiDEE - Politecnico di BariDEE - Politecnico di Bari

Fondamenti di Informatica CDL in Ingegneria Gestionale - A.A. Fondamenti di Informatica CDL in Ingegneria Gestionale - A.A. 2011-20122011-2012

/*Gestione file Persone (1)*/typedef struct { char nome[20];

char cognome[20];char indirizzo[50];

} Persona;typedef char CodFisc[16];typedef struct { char nome[20];

char cognome[20];char indirizzo[50];CodFisc CodiceFiscale;

} NuovaPersona;/* I file Persone, CodiciFiscali e Nuove Persone si suppongono aperti dal main.

pp, cf e np fanno riferimento ai tre file in questione */int AggiornaPersone (FILE *pp, FILE *cf, FILE *np){

Persona PersonaCorrente;CodFisc CodFiscCorrente;NuovaPersona NuovaPersonaCorrente;…

Esempio con file binario (1)Esempio con file binario (1)

Page 18: Fondamenti di Informatica CDL in Ingegneria Gestionale - A.A. 2011-2012 10. Gestione dei file Ing. Simona Colucci.

Sistemi Sistemi InformativiInformativiDEE - Politecnico di BariDEE - Politecnico di Bari

Fondamenti di Informatica CDL in Ingegneria Gestionale - A.A. Fondamenti di Informatica CDL in Ingegneria Gestionale - A.A. 2011-20122011-2012

…/*Gestione file Persone (2)*/

rewind(pp);/* Rende possibile le seguenti operazioni di lettura e scrittura sul file

identificato da pp, iniziando dal primo byte del file.*/rewind(cf);rewind(np);

while (fread(&PersonaCorrente,sizeof(Persona),1,pp) != 0)/* Finché non si è raggiunta la fine del file */

{fread(&CodFiscCorrente,sizeof(CodFisc),1,cf);strcpy(NuovaPersonaCorrente.nome, PersonaCorrente.nome);strcpy(NuovaPersonaCorrente.cognome,PersonaCorrente.cognome);strcpy(NuovaPersonaCorrente.indirizzo, PersonaCorrente.indirizzo);strcpy(NuovaPersonaCorrente.CodiceFiscale, CodFiscCorrente);fwrite(&NuovaPersonaCorrente,sizeof(NuovaPersona),1,np);

}}

Esempio con file binario (2)Esempio con file binario (2)

Page 19: Fondamenti di Informatica CDL in Ingegneria Gestionale - A.A. 2011-2012 10. Gestione dei file Ing. Simona Colucci.

Sistemi Sistemi InformativiInformativiDEE - Politecnico di BariDEE - Politecnico di Bari

Fondamenti di Informatica CDL in Ingegneria Gestionale - A.A. Fondamenti di Informatica CDL in Ingegneria Gestionale - A.A. 2011-20122011-2012

Accesso direttoAccesso diretto

Consente di accedere direttamente ai byte specificati all’interno del file tramite le funzioni:

• int fseek(FILE *fp, long offset, int refpoint)Refpoint:– SEEK_SET : scostamento rispetto all’inizio del file,

– SEEK_CUR : scostamento rispetto alla posizione corrente,

– SEEK_END : scostamento rispetto alla fine del file.

• long ftell(FILE *fp)• rewind(f)

equivale a:

fseek (f, 0, SEEK_SET);

Page 20: Fondamenti di Informatica CDL in Ingegneria Gestionale - A.A. 2011-2012 10. Gestione dei file Ing. Simona Colucci.

Sistemi Sistemi InformativiInformativiDEE - Politecnico di BariDEE - Politecnico di Bari

Fondamenti di Informatica CDL in Ingegneria Gestionale - A.A. Fondamenti di Informatica CDL in Ingegneria Gestionale - A.A. 2011-20122011-2012

/*Inversione del contenuto di un file numint di interi (1)*/...main (){

FILE *f;long int inizio, fine;int tempi, tempf;unsigned int dim;if ((f = fopen ("numint", "rb+")) == NULL){

puts ("Non è stato possibile aprire il file numint");/* più efficiente della printf per la stampa di un messaggio dato che non richiede la scansione e

l’interpretazione della stringa di controllo */exit(1);

/* La funzione exit provoca una conclusione non anomala del programma e la restituzione del controllo al sistema operativo */

}…

Accesso diretto (2)Accesso diretto (2)

Page 21: Fondamenti di Informatica CDL in Ingegneria Gestionale - A.A. 2011-2012 10. Gestione dei file Ing. Simona Colucci.

Sistemi Sistemi InformativiInformativiDEE - Politecnico di BariDEE - Politecnico di Bari

Fondamenti di Informatica CDL in Ingegneria Gestionale - A.A. Fondamenti di Informatica CDL in Ingegneria Gestionale - A.A. 2011-20122011-2012

/*Inversione del contenuto di un file numint di interi (2)*/...inizio = 0;dim = sizeof(int);fseek (f, –dim, SEEK_END);

/* SEEK_END è una costante definita nel file stdio.h. Ha valore 2 */fine = ftell (f);while (inizio < fine){

fseek (f, inizio, SEEK_SET);fread (&tempi, dim, 1, f);fseek (f, fine, SEEK_SET);fread (&tempf, dim, 1, f);

/* È necessario riposizionarsi */fseek (f, fine, SEEK_SET); fwrite (&tempi, dim, 1, f);fseek (f, inizio, SEEK_SET);fwrite (&tempf, dim, 1, f);inizio = inizio + dim;fine = fine – dim;

} }

Accesso diretto (3)Accesso diretto (3)

Page 22: Fondamenti di Informatica CDL in Ingegneria Gestionale - A.A. 2011-2012 10. Gestione dei file Ing. Simona Colucci.

Sistemi Sistemi InformativiInformativiDEE - Politecnico di BariDEE - Politecnico di Bari

Fondamenti di Informatica CDL in Ingegneria Gestionale - A.A. Fondamenti di Informatica CDL in Ingegneria Gestionale - A.A. 2011-20122011-2012

/* Programma ServizioVoli (1)*/void main (){

[dichiarazioni varie: esse dovranno definire le variabili necessarie per far riferimento ai file che memorizzano l'archivio, le varie funzioni destinate alla sua gestione in relazione alle operazioni richieste, le variabili e i tipi associati all'archivio e le variabili e tipi necessari per la realizzazione del menu]

 Fine = false;do{

[RipulisciLoSchermo]puts ("\nSono disponibili le seguenti operazioni. Per selezionare

un'operazione premere il tasto indicato alla destradell'operazione e il carattere di Invio.\n");

/* Ricordiamo che puts inserisce dopo la stringa un newline ottenendo l'andata a capo */puts ("Prenotazione volo: P");puts ("Cancellazione di una prenotazione: C");puts ("Inserimento in lista di attesa: A");puts ("Fine operazioni: F");Risposta = getchar ();…

Programma Servizio Voli (1)Programma Servizio Voli (1)

Page 23: Fondamenti di Informatica CDL in Ingegneria Gestionale - A.A. 2011-2012 10. Gestione dei file Ing. Simona Colucci.

Sistemi Sistemi InformativiInformativiDEE - Politecnico di BariDEE - Politecnico di Bari

Fondamenti di Informatica CDL in Ingegneria Gestionale - A.A. Fondamenti di Informatica CDL in Ingegneria Gestionale - A.A. 2011-20122011-2012

/* Programma ServizioVoli (2)*/…Risposta = getchar ();switch (Risposta){

case 'P': ServiPrenotazioni();break;

case 'C': ServiCancellazioni();break;

case 'A': ServiListaAttesa();break;

case 'F': Fine = true;break;

}} while (Fine == false);[RipulisciLoSchermo]puts ("\n\n\nArrivederci\n");

}

Programma Servizio Voli (2)Programma Servizio Voli (2)

Page 24: Fondamenti di Informatica CDL in Ingegneria Gestionale - A.A. 2011-2012 10. Gestione dei file Ing. Simona Colucci.

Sistemi Sistemi InformativiInformativiDEE - Politecnico di BariDEE - Politecnico di Bari

Fondamenti di Informatica CDL in Ingegneria Gestionale - A.A. Fondamenti di Informatica CDL in Ingegneria Gestionale - A.A. 2011-20122011-2012

/* Programma ServizioVoli (3)*/

 

#define MAXPOSTI 350typedef struct { char Cognome[30];

char Nome[30];} Passeggero;

typedef struct { int NumVolo;char Data[10];Passeggero Prenotazioni[MAXPOSTI];Passeggero ListaAttesa[100];

} DescrizioneVolo; 

Programma Servizio Voli (3)Programma Servizio Voli (3)

Page 25: Fondamenti di Informatica CDL in Ingegneria Gestionale - A.A. 2011-2012 10. Gestione dei file Ing. Simona Colucci.

Sistemi Sistemi InformativiInformativiDEE - Politecnico di BariDEE - Politecnico di Bari

Fondamenti di Informatica CDL in Ingegneria Gestionale - A.A. Fondamenti di Informatica CDL in Ingegneria Gestionale - A.A. 2011-20122011-2012

/* Programma ServizioVoli (4)*/

boolean Fine;char Risposta;

/* Puntatore al descrittore del file ArchivioVoli */FILE *av; void ServiPrenotazioni (void);

/* Esegue, se possibile, la prenotazione richiesta. In caso contrario, chiede automaticamente all'utente se desidera essere messo in lista di attesa. Se la risposta è positiva, chiama la funzione ServiListaAttesa senza bisogno di ritornare al menu principale. Dopo l'esecuzione della funzione ServiListaAttesa, termina anche la ServiPrenotazioni. L'esecuzione della funzione comporta l'interazione con l'utente attraverso un opportuno menu in cui vengono chiesti all'utente il numero e la data del volo desiderato, il cognome e il nome del passeggero. Dopo aver ottenuto i dati richiesti la funzione accede all'archivio e provvede alle necessarie operazioni di interrogazione e aggiornamento */

Programma Servizio Voli (4)Programma Servizio Voli (4)

Page 26: Fondamenti di Informatica CDL in Ingegneria Gestionale - A.A. 2011-2012 10. Gestione dei file Ing. Simona Colucci.

Sistemi Sistemi InformativiInformativiDEE - Politecnico di BariDEE - Politecnico di Bari

Fondamenti di Informatica CDL in Ingegneria Gestionale - A.A. Fondamenti di Informatica CDL in Ingegneria Gestionale - A.A. 2011-20122011-2012

/* Programma ServizioVoli (5)*/

… void ServiCancellazioni (void);

/* Vengono chiesti, tramite opportuno menu, i dati del passeggero e l'identificazione del volo al quale si intende rinunciare. Viene cancellato il passeggero dalla relativa lista. Inoltre, se la lista d'attesa del volo non è vuota, si estrae il suo primo elemento e lo si inserisce nella lista delle prenotazioni. Viene quindi scritto un messaggio sul terminale che avvisa l'operatore che un elemento della lista d'attesa ha ora la sua prenotazione confermata */

 void ServiListaAttesa(void);

/* Vengono chieste le solite informazioni e viene inserito il passeggero nella lista d'attesa desiderata */

Programma Servizio Voli (5)Programma Servizio Voli (5)