Programmazione 1 (P-Z) a.a. 2007-08
Homework 5
Termine di consegna 7 Gennaio 2008, Ore 23:59
E' molto importante che prima di inviare le soluzioni leggiate le Indicazioni di consegna.
Esercizio 1
Si consideri un file di testo semplice file_input che contiene le informazioni Nome, cognome, data di nascita
e numero di matricola di un gruppo di studenti, formattati all'interno del file nel seguente modo:
Nome1; Cognome1; gg/mm/aaaa; Matricola1;
.....
NomeN; CognomeN; gg/mm/aaaa; MatricolaN;
Si consideri inoltre il seguente tipo:
typedef struct Studente {
char Nome [20];
char Cognome [20];
char data_di_nascita [11];
unsigned int Matricola;
} record_studente;
Scrivere una funzione con prototipo:
int scrivi_dati(char* file_input, char* file_output);
che prende in input la stringa file_input che contiene il nome di un file di testo semplice, crea, per ogni riga (che corrisponde ad uno studente), una struttura di tipo record_studente e scrive tale record in un file binario dal nome contenuto nella stringa file_output .
La funzione deve ritornare:
- -1 In caso di errore.
- 0 In caso di scrittura avvenuta con successo.
Esercizio 2
Si consideri il tipo di cui sopra.
Scrivere una funzione con prototipo:
int cancella_doppioni(char* file_binario);
che prende in input la stringa file binario che contiene il nome di un file fatto di record_studente, e, per tutti i record che hanno valore uguale nel campo Matricola, pone il campo Matricola uguale a 0.
La funzione da' in output:
- -1 in caso di errore;
- nr di "record cancellati" in caso di avvenuta "cancellazione".
Attenzione: In entrambi gli esercizi
non dovete usare file di appoggio, ma
dovete lavorare sui file i cui nomi
vengono presi in input dalle funzioni.
Attenzione 2: Non dovete assolutamente utilizzare funzioni di librerie estese, ma
solo funzioni delle
librerie standard del linguaggio C.
--
JulindaStefa - 11 Dec 2007