Passata generale di ispell
[gapil.git] / filestd.tex
1 \chapter{I files: l'interfaccia standard ANSI C}
2 \label{cha:files_std_interface}
3
4 %
5 % Questa va per ultima. Va bene che e` la più usata, ma è basata sulle altre
6 %
7 \section{I file stream e gli oggetti \type{FILE}}
8 \label{sec:file_stream}
9
10 Esamineremo in questa sezione l'interfaccia per i file stream, le modalità per
11 crearli, e le funzioni disponibili per leggere, scrivere e compiere le varie
12 operazioni connesse all'uso dei file. L'interfaccia è accessibile includendo
13 l'header file \file{stdio.h}.
14
15 Per ragioni storiche la struttura di dati che rappresenta un stream è stata
16 chiamata \type{FILE}, questi oggetti sono creati dalle funzioni di libreria e
17 contengono tutte le informazioni necessarie a gestire le operazioni sugli
18 stream, come la posizione corrente, lo stato del buffer e degli indicatori di
19 stato e di fine del file. Per questo motivo gli utenti non devono mai
20 utilizzare direttamente o allocare queste strutture, ma usare sempre puntatori
21 del tipo \type{FILE *} (tanto che in certi casi il termine di puntatore a file
22 è diventato sinonimo di stream).
23
24 \subsection{Gli stream standard}
25 \label{sec:file_std_stream}
26
27
28 Ai tre file standard (vedi \secref{sec:file_std_descr}) aperti per ogni
29 processo, corrispondono altrettanti stream predefiniti per ogni processo, che
30 rappresentano i canali standard di input/output prestabiliti; anche questi
31 tre stream sono definiti nell'header \file{stdio.h} e sono:
32
33 \begin{itemize}
34 \item \var{FILE * stdin} Lo \textit{standard input} cioè lo stream da cui
35   il processo riceve ordinariamente i dati in ingresso. Normalmente è associato
36   dalla shell all'input del terminale e prende i caratteri dalla tastiera.
37 \item \var{FILE * stdout} Lo \textit{standard input} cioè lo stream su cui
38   il processo invia ordinariamente i dati in uscita. Normalmente è associato
39   dalla shell all'output del terminale e scrive sullo schermo.
40 \item \var{FILE * stderr} Lo \textit{standard input} cioè lo stream su cui
41   il processo è supposto inviare i messaggi di errore. Normalmente anch'esso
42   è associato dalla shell all'output del terminale e scrive sullo schermo.
43 \end{itemize}
44
45
46 \subsection{La bufferizzazione}
47 \label{sec:file_buffering}
48
49
50
51 \section{Funzioni base}
52 \label{sec:file_ansi_base_func}
53
54
55 \subsection{Apertura di uno stream}
56 \label{sec:file_fopen}
57
58
59 \subsection{Lettura e scrittura su uno stream}
60 \label{sec:file_io}
61
62
63 \subsection{Posizionamento su uno stream}
64 \label{sec:file_fseek}
65
66
67 \subsection{Input/output binario}
68 \label{sec:file_binary_io}
69
70
71 \subsection{Input/output di linea}
72 \label{sec:file_line_io}
73
74
75 \subsection{Input/output formattato}
76 \label{sec:file_formatted_io}
77
78
79 \subsection{Chiusura di uno stream}
80 \label{sec:file_fclose}
81
82
83
84 \section{Funzioni avanzate}
85 \label{sec:file_stream_adv_func}
86
87
88 \subsection{Dettagli dell'implementazione}
89 \label{sec:file_stream_details}
90
91
92 \subsection{File temporanei}
93 \label{sec:file_temp_file}
94
95
96 \subsection{Efficienza}
97 \label{sec:file_stream_efficiency}
98
99
100
101
102
103
104
105