Estratto del documento

Consente di scrivere testo formattato su un file di testo aperto in modalità di

scrittura o aggiornamento. È una generalizzazione della funzione printf

Valore di Ritorno: In caso di successo, la funzione restituisce il numero di

caratteri scritti nello stream; altrimenti, restituisce EOF (una costante simbolica,

solitamente -1, definita in stdio.h).

3) Scrittura di un singolo carattere (fputc):

- Funzione: int fputc (int c, FILE * fp);.

Consente di scrivere il carattere c su un file di testo aperto in modalità di

scrittura o aggiornamento. La funzione converte c in un unsigned char e usa

solo il byte di ordine più basso.

Valore di Ritorno: In caso di successo, restituisce il carattere scritto; altrimenti,

restituisce EOF.

4) Scrittura di una stringa (fputs):

- Funzione: int fputs (char * s, FILE * fp);.

Consente di scrivere una riga (stringa di caratteri) su un file di testo aperto in

modalità di scrittura o aggiornamento. La stringa s deve essere terminata con il

carattere di fine stringa \0.

Valore di Ritorno: In caso di successo, restituisce un intero non negativo;

altrimenti, restituisce EOF.

Lettura da File

1) Lettura di blocchi di byte (fread):

- Funzione: n = fread(buf, dimensione, elementi, fp);.

buf: È il vettore dove devono essere trasferite le informazioni lette dal file.

dimensione: Rappresenta la dimensione in byte di un elemento del vettore.

elementi: Indica il numero di elementi del vettore da leggere.

fp: Punta al file da leggere.

- Valore di Ritorno: Il valore di ritorno di fread indica il numero di elementi letti dal

file. Tale numero può non coincidere con il numero di elementi richiesti se il file

è vuoto o contiene un numero di elementi inferiore a quello di buf. Se il valore di

ritorno è negativo, significa che c'è stato un errore (es. il file non è stato

aperto). Quando tutto il contenuto del file è stato letto, la funzione fread ritorna

il valore 0.

- Accesso Sequenziale: Le operazioni di lettura accedono al file in maniera

sequenziale e mantengono traccia del punto in cui si è arrivati nella lettura. A

ogni chiamata a fread, il puntatore si sposta in avanti di un numero di byte pari

a quelli che sono stati letti. Per file grandi, fread deve essere ripetuta più di una

volta, leggendo a ogni chiamata soltanto una limitata porzione del file.

2) Lettura formattata per file di testo (fscanf):

- Funzione: int fscanf (FILE * fp, char * stringa_di_controllo,…..);.

Consente di leggere testo in modo formattato da un file di testo aperto in

modalità di lettura o aggiornamento. È una generalizzazione di scanf.

- Valore di Ritorno: In caso di successo, restituisce il numero di caratteri letti dal

file; altrimenti, restituisce EOF.

3) Lettura di un singolo carattere (fgetc):

- Funzione: int fgetc (FILE * fp);.

Consente di leggere il carattere correntemente puntato dall'indicatore di

posizione da uno stream di testo aperto in modalità di lettura o aggiornamento.

Valore di Ritorno: In caso di successo (se non si è raggiunto il marcatore end-of-

file), la funzione restituisce il carattere letto; altrimenti, restituisce EOF.

4) Lettura di una stringa (fgets):

- Funzione: char * fgets (char * s, int n, FILE * fp);.

Consente di leggere dalla posizione corrente di un file di testo (aperto in

modalità di lettura o aggiornamento) una stringa di al più n-1 caratteri e

memorizzarla nell’array s insieme al carattere \0 di terminazione stringa. Il

numero effettivo di caratteri letti può essere inferiore a n-1 se il k-esimo

carattere è un newline, che viene incluso nella stringa.

Valore di Ritorno: In caso di successo, la funzione restituisce s; in caso di

insuccesso (errore o raggiungimento dell'end-of-file), restituisce NULL.

5) Lettura e scrittura random nel file (fseek e fteel)

Nel C, è possibile operare sui file di byte anche con modalità random.

- fseek: Consente di muovere il puntatore di lettura e/o scrittura in una qualunque

posizione del file.

Funzione: err = fseek(fp, n, mode);.

fp: Il file pointer.

n: Indica di quanti byte il file pointer deve essere spostato. Se n è negativo,

significa che il file pointer deve essere spostato indietro.

mode: Indica a partire da quale posizione muovere il file pointer:

0 (o SEEK_SET): Spostamento a partire dall'inizio del file.

1 (o SEEK_CUR): Spostamento a partire dalla posizione corrente.

2 (o SEEK_END): Spostamento a partire dalla fine del file.

Valore di Ritorno: Negativo se si è verificato un errore, maggiore o uguale a 0 in

caso contrario.

- ftell:

Il C mette a disposizione questa funzione per conoscere la posizione corrente

del file pointer.

Funzione: n = ftell(fp);.

Valore di Ritorno: Ritorna la posizione corrente del file pointer. Se si verifica un

errore (per esempio se il file non è stato aperto), ftell ritorna un valore negativo.

Questa funzione può essere usata, ad esempio, per determinare la dimensione

di un file posizionando il puntatore alla fine e poi chiamando ftell.

6) Controllo Fine File (feof)

- Funzione: int feof (FILE * fp);.

Scopo: Consente di controllare se il file pointer è posizionato a fine file (end-of-

file).

Valore di Ritorno: Restituisce 1 se il file pointer è posizionato a fine file e il

numero 0 in caso contrario.

7. Stream di Default

Quando un programma C va in esecuzione, il sistema apre automaticamente tre file

pointer, chiamati stream di default o flussi standard:

•stdin: Lo standard input, che riceve input dalla tastiera ed è aperto in sola lettura.

•stdout: Lo standard output, che stampa l'output sullo schermo ed è aperto in sola

scrittura.

•stderr: Lo standard error, che stampa messaggi di errore sullo schermo ed è aperto in

sola scrittura. Questi stream sono manipolati usando le variabili globali puntatore di

tipo FILE * stdin, stdout, e stderr definite in stdio.h.

Esistono equivalenze tra alcune funzioni di I/O standard e le loro controparti per file:

•printf(...) è equivalente a fprintf(stdout,...).

•scanf(...) è equivalente a fscanf(stdin,...).

•getchar() è equivalente a fgetc(stdin).

•putchar(c) è equivalente a fputc(c, stdout).

•feof() è equivalente a feof(stdin).

È importante notare che gets(buf) non è equivalente a fgets(buf, n, stdin) perché gets

legge una riga da tastiera ma elimina il carattere di newline. Allo stesso modo,

puts(buf) non è equivalente a fputs(buf, stdout) perché puts scrive una riga a video

aggiungendo automaticamente un carattere di newline. Inoltre, gets non offre

controllo sulla dimensione del buffer, il che la rende una funzione insicura.

8. Specificatori di Formato per printf/fprintf

Le funzioni printf e fprintf utilizzano specificatori di formato per controllare la stampa

dell'output. La sintassi generale è %[flags][width][.precision][length]specifier. Alcuni

specificatori comuni (specifier) includono:

•%d o %i: intero decimale con segno.

•%u: intero decimale senza segno.

•%o: intero ottale senza segno.

•%x o %X: intero esadecimale senza segno (maiuscolo per %X).

•%f o %F: numero in virgola mobile decimale.

•%e o %E: notazione scientifica (mantissa/esponente).

•%g o %G: usa la rappresentazione più breve tra %e e %f (o %E e %F).

•%c: carattere singolo.

Anteprima
Vedrai una selezione di 3 pagine su 6
File Elementi di programmazione Pag. 1 File Elementi di programmazione Pag. 2
Anteprima di 3 pagg. su 6.
Scarica il documento per vederlo tutto.
File Elementi di programmazione Pag. 6
1 su 6
D/illustrazione/soddisfatti o rimborsati
Acquista con carta o PayPal
Scarica i documenti tutte le volte che vuoi
Dettagli
SSD
Scienze matematiche e informatiche INF/01 Informatica

I contenuti di questa pagina costituiscono rielaborazioni personali del Publisher sav.lis di informazioni apprese con la frequenza delle lezioni di Elementi di programmazione e studio autonomo di eventuali libri di riferimento in preparazione dell'esame finale o della tesi. Non devono intendersi come materiale ufficiale dell'università Università degli studi della Campania "Luigi Vanvitelli" o del prof Cesario Vincenzo Angelino.
Appunti correlati Invia appunti e guadagna

Domande e risposte

Hai bisogno di aiuto?
Chiedi alla community