2000 Prentice Hall, Inc. All rights reserved. I file Apertura e chiusura I file ad accesso...

5
2000 Prentice Hall, Inc. All rights reserved. I file Apertura e chiusura I file ad accesso sequenziale I file ad accesso casuale pre un file già esistente in sola lettura. Se il file non esiste, l’apertura fallisce o crea un file in sola scrittura. Se esiste già, ne elimina il contenuto attuale e vi scrive un file in sola scrittura. Se il file esiste già, vi scrive in accodamento, ovvero dalla fine Apre un file in lettura e scrittura. Se il file non esiste, l’apertura fallisce n file in lettura e scrittura. Se il file esiste già, ne elimina il contenuto attuale e vi scri o crea un file in lettura e scrittura. Se esiste già, vi scrive in accodamento, ovvero dalla f Descrizione Modo r w a r+ w+ a+

Transcript of 2000 Prentice Hall, Inc. All rights reserved. I file Apertura e chiusura I file ad accesso...

Page 1: 2000 Prentice Hall, Inc. All rights reserved. I file Apertura e chiusura I file ad accesso sequenziale I file ad accesso casuale Apre un file già esistente.

2000 Prentice Hall, Inc. All rights reserved.

I file

• Apertura e chiusura• I file ad accesso sequenziale• I file ad accesso casuale

Apre un file già esistente in sola lettura. Se il file non esiste, l’apertura fallisce

Apre o crea un file in sola scrittura. Se esiste già, ne elimina il contenuto attuale e vi scrive dall’inizio

Crea un file in sola scrittura. Se il file esiste già, vi scrive in accodamento, ovvero dalla fine del file

Apre un file in lettura e scrittura. Se il file non esiste, l’apertura fallisce

Crea un file in lettura e scrittura. Se il file esiste già, ne elimina il contenuto attuale e vi scrive dall’inizio

Apre o crea un file in lettura e scrittura. Se esiste già, vi scrive in accodamento, ovvero dalla fine del file

DescrizioneModo

r

w

a

r+

w+

a+

Page 2: 2000 Prentice Hall, Inc. All rights reserved. I file Apertura e chiusura I file ad accesso sequenziale I file ad accesso casuale Apre un file già esistente.

2000 Prentice Hall, Inc. All rights reserved.

I file: apertura e chiusura

• Apertura e chiusura di un file in lettura…FILE *filePtr; if (( filePtr = fopen(“esempio.dat", “r") ) == NULL) printf( “Il file non può essere aperto.\n" );else{ … //Istruzioni per la lettura da file fclose(filePtr);}…

• Apertura e chiusura di un file in scrittura…FILE *filePtr; if (( filePtr = fopen(“esempio.dat", “w") ) == NULL) printf( “Il file non può essere aperto.\n" );else{ … //Istruzioni per la scrittura su file fclose(filePtr);}…

Page 3: 2000 Prentice Hall, Inc. All rights reserved. I file Apertura e chiusura I file ad accesso sequenziale I file ad accesso casuale Apre un file già esistente.

2000 Prentice Hall, Inc. All rights reserved.

I file: accesso sequenziale

• Leggere e stampare i record di un file sequenziale…fscanf(filePtr, "%d%s%f", &account, name, &balance );while ( !feof(filePtr) ){ printf("%d%s%f\n", account, name, balance); fscanf(filePtr, "%d%s%f", &account, name, &balance );}…

• Acquisire dati e scriverli come record di un file sequenziale…scanf( "%d%s%f", &account, name, &balance );while ( !feof(stdin) ){ fprintf(filePtr, "%d %s %f\n ", account, name, balance ); scanf("%d%s%f", &account, name, &balance);}…

• NOTA: con i file sequenziali fa testo il numero di caratteri occupati dai dati dei campi (a dimensione variabile) dei record

Page 4: 2000 Prentice Hall, Inc. All rights reserved. I file Apertura e chiusura I file ad accesso sequenziale I file ad accesso casuale Apre un file già esistente.

2000 Prentice Hall, Inc. All rights reserved.

I file: accesso casuale (1/2)

• Leggere e stampare i record di un file ad accesso casuale

…struct accountData{ int accNum; char accOwner[15]; float accBalance;}…struct accountData temp = {0, “”, 0.0}…fread(&temp, sizeof(struct accountData), 1, filePtr);printf("%d%s%f\n", temp.accNum, temp.accOwner, temp.accBalance);while ( !feof(filePtr) ){ fread(&temp, sizeof(struct accountData), 1, filePtr); printf("%d%s%f\n", temp.accNum, temp.accOwner, temp.accBalance);}…

• NOTA: con i file ad accesso casuale il numero di caratteri occupati dai dati dei campi del record non conta; i campi hanno tutti dimensione fissa, conta il numero di byte dei tipi

Page 5: 2000 Prentice Hall, Inc. All rights reserved. I file Apertura e chiusura I file ad accesso sequenziale I file ad accesso casuale Apre un file già esistente.

2000 Prentice Hall, Inc. All rights reserved.

I file: accesso casuale (2/2)

• Acquisire dati e scriverli su un file ad accesso casuale…struct accountData{ int accNum; char accOwner[15]; float accBalance;}…struct accountData temp = {0, “”, 0.0}…scanf( "%d%s%f", &temp.accNum, temp.accOwner, &temp.accBalance );while ( !feof(stdin) ){ fwrite(&temp, sizeof(struct accountData), 1, filePtr); scanf( "%d%s%f", &temp.accNum, temp.accOwner, &temp.accBalance );}…

• Aggiornare un record in una posizione specifica index…int index = 15;fseek(filePtr, (index - 1) * sizeof(struct accountData), SEEK_SET);fwrite(&temp, sizeof(struct accountData), 1, filePtr);…