Correzioni di claudio
[gapil.git] / filestd.tex
index df1b4655337b218f851cd3e9a15b2ffd9beeeb6d..582f696764ce856da6a0a02263ea3dfb6473a1f1 100644 (file)
@@ -805,7 +805,7 @@ newline, che deve essere previsto esplicitamente.
 Come per le funzioni di input/output a caratteri esistono le estensioni
 per leggere e scrivere caratteri estesi, i loro prototipi sono:
 \begin{functions}
 Come per le funzioni di input/output a caratteri esistono le estensioni
 per leggere e scrivere caratteri estesi, i loro prototipi sono:
 \begin{functions}
-  \headdecl{whar.h} 
+  \headdecl{wchar.h} 
   \funcdecl{wchar\_t *fgetws(wchar\_t *ws, int n, FILE *stream)}
   Legge un massimo di \param{n} caratteri estesi dal file
   \param{stream} al buffer \param{ws}.
   \funcdecl{wchar\_t *fgetws(wchar\_t *ws, int n, FILE *stream)}
   Legge un massimo di \param{n} caratteri estesi dal file
   \param{stream} al buffer \param{ws}.
@@ -834,7 +834,7 @@ previste dallo standard ANSI C presentano svariati inconvenienti. Bench
 \func{fgets} non abbia i gravissimi problemi di \func{gets}, può
 comunque dare risultati ambigui se l'input contiene degli zeri; questi
 infatti saranno scritti sul buffer di uscita e la stringa in output
 \func{fgets} non abbia i gravissimi problemi di \func{gets}, può
 comunque dare risultati ambigui se l'input contiene degli zeri; questi
 infatti saranno scritti sul buffer di uscita e la stringa in output
-apparirà come più corta dei bytes effettivamente letti. Questa è una
+apparirà come più corta dei byte effettivamente letti. Questa è una
 condizione che è sempre possibile controllare (deve essere presente un
 newline prima della effettiva conclusione della stringa presente nel
 buffer), ma a costo di una complicazione ulteriore della logica del
 condizione che è sempre possibile controllare (deve essere presente un
 newline prima della effettiva conclusione della stringa presente nel
 buffer), ma a costo di una complicazione ulteriore della logica del
@@ -940,7 +940,7 @@ famiglia \func{printf}; le tre pi
   \bodydesc{Le funzioni ritornano il numero di caratteri stampati.}
 \end{functions}
 \noindent le prime due servono per stampare su file (lo standard output
   \bodydesc{Le funzioni ritornano il numero di caratteri stampati.}
 \end{functions}
 \noindent le prime due servono per stampare su file (lo standard output
-o quallo specificato) la terza permette di stampare su una stringa, in
+o quello specificato) la terza permette di stampare su una stringa, in
 genere l'uso di \func{sprintf} è sconsigliato in quanto è possibile, se
 non si ha la sicurezza assoluta sulle dimensioni del risultato della
 stampa, eccedere le dimensioni di \param{str}; per questo motivo si
 genere l'uso di \func{sprintf} è sconsigliato in quanto è possibile, se
 non si ha la sicurezza assoluta sulle dimensioni del risultato della
 stampa, eccedere le dimensioni di \param{str}; per questo motivo si
@@ -955,56 +955,111 @@ La parte pi
 \param{format} che indica le conversioni da fare, da cui poi deriva il numero
 dei parametri che dovranno essere passati a seguire. La stringa è costituita
 da caratteri normali (tutti eccetto \texttt{\%}), che vengono passati
 \param{format} che indica le conversioni da fare, da cui poi deriva il numero
 dei parametri che dovranno essere passati a seguire. La stringa è costituita
 da caratteri normali (tutti eccetto \texttt{\%}), che vengono passati
-invariati all'output, e da direttive di conversione, il cui formato è sempre
-del tipo:
+invariati all'output, e da direttive di conversione, in cui devono essere
+sempre presenti il carattere \texttt{\%}, che introduce la direttiva, ed uno
+degli specificatori di conversione (riportati in \ntab) che la conclude. 
+
+\begin{table}[htb]
+  \centering
+  \begin{tabular}[c]{|l|l|p{10cm}|}
+    \hline
+    \textbf{Valore} & \textbf{Tipo} & \textbf{Significato} \\
+    \hline
+    \hline
+   \cmd{\%d} &\type{int}         & Stampa un numero intero in formato decimale
+                                   con segno \\
+   \cmd{\%i} &\type{int}         & Identico a \cmd{\%i} in output, \\
+   \cmd{\%o} &\type{unsigned int}& Stampa un numero intero come ottale\\
+   \cmd{\%u} &\type{unsigned int}& Stampa un numero intero in formato
+                                   decimale senza segno \\
+   \cmd{\%x}, 
+   \cmd{\%X} &\type{unsigned int}& Stampano un intero in formato esadecimale,
+                                   rispettivamente con lettere minuscole e
+                                   maiuscole. \\
+   \cmd{\%f} &\type{unsigned int}& Stampa un numero in virgola mobile con la
+                                   notazione a virgola fissa \\
+   \cmd{\%e}, 
+   \cmd{\%E} &\type{double} & Stampano un numero in virgola mobile con la
+                              notazione esponenziale, rispettivamente con
+                              lettere minuscole e maiuscole. \\
+   \cmd{\%g}, 
+   \cmd{\%G} &\type{double} & Stampano un numero in virgola mobile con la
+                              notazione più appropriate delle due precedenti,
+                              rispettivamente con lettere minuscole e
+                              maiuscole. \\
+   \cmd{\%a}, 
+   \cmd{\%A} &\type{double} & Stampano un numero in virgola mobile in
+                              notazione esadecimale frazionaria\\
+   \cmd{\%c} &\type{int}    & Stampa un carattere singolo\\
+   \cmd{\%s} &\type{char *} & Stampa una stringa \\
+   \cmd{\%p} &\type{void *} & Stampa il valore di un puntatore\\
+   \cmd{\%n} &\type{\&int}  & Prende il numero di caratteri stampati finora\\
+   \cmd{\%\%}&              & Stampa un \% \\
+    \hline
+  \end{tabular}
+  \caption{Valori possibili per gli specificatori di conversione in una
+    stringa di formato di \func{printf}.} 
+  \label{tab:file_format_spec}
+\end{table}
+
+
+Il formato di una direttiva di conversione prevede una serie di possibili
+elementi opzionali oltre al \cmd{\%} e allo specificatore di conversione; in
+generale essa è sempre del tipo:
 \begin{center}
 \begin{verbatim}
 \begin{center}
 \begin{verbatim}
-% [n. parametro $] [flag] [larghezza] [. precisione] [tipo] conversione
+% [n. parametro $] [flag] [[larghezza] [. precisione]] [tipo] conversione
 \end{verbatim}
 \end{center}
 \end{verbatim}
 \end{center}
-in cui devono essere sempre presenti il carattere \texttt{\%}, che introduce
-la direttiva, ed uno degli specificatori di conversione (riportatati in \ntab)
-che la conclude; gli altri valori, indicati fra parentesi, sono opzionali.
+in cui i valori opzionali sono indicati fra parentesi, e prevedono la
+presenza, in questo ordine, di: uno specificatore per il parametro da usare
+(terminato da un \cmd{\$}, uno o più flag (riassunti in \tabref{}) che
+controllano il formato di stampa della conversione (riassunti in \tabref{}),
+uno specificatore di larghezza, eventualmente seguito (per i numeri in virgola
+mobile) da un specificatore di precisione, uno specificatore del tipo di dato
+(che ne indica la lunghezza).
 
 \begin{table}[htb]
   \centering
   \begin{tabular}[c]{|l|p{10cm}|}
     \hline
 
 \begin{table}[htb]
   \centering
   \begin{tabular}[c]{|l|p{10cm}|}
     \hline
-    \textbf{Valore} & \textbf{Significato} \\
+    \textbf{Valore} & \textbf{Significato}\\
     \hline
     \hline
     \hline
     \hline
-   \cmd{\%d}            & Stampa un numero intero in formato decimale 
-                          con segno\\
-   \cmd{\%i}            & Identico a \cmd{\%i} in output, \\
-   \cmd{\%o}            & Stampa un numero intero come ottale\\
-   \cmd{\%u}            & Stampa un numero intero in formato decimale senza
-                          segno \\
-   \cmd{\%x}, \cmd{\%X} & Stampano un intero in formato esadecimale,
-                          rispettivamente con lettere minuscole e maiuscole. \\
-   \cmd{\%f}            & Stampa un numero in virgola mobile con la notazione
-                          a virgola fissa \\
-   \cmd{\%e}, \cmd{\%E} & Stampano un numero in virgola mobile con la notazione
-                          esponenziale, rispettivamente con lettere minuscole 
-                          e maiuscole. \\
-   \cmd{\%g}, \cmd{\%G} & Stampano un numero in virgola mobile con la notazione
-                          più appropriate delle due precedenti,
-                          rispettivamente con lettere minuscole e maiuscole. \\
-   \cmd{\%a}, \cmd{\%A} & Stampano un numero in virgola mobile in notazione 
-                          esadecimale frazionaria\\
-   \cmd{\%c}            & Stampa un carattere singolo\\
-   \cmd{\%s}            & Stampa una stringa \\
-   \cmd{\%p}            & Stampa il valore di un puntatore\\
-   \cmd{\%n}            & Prende il numero di caratteri stampati finora\\
+    \cmd{\#}  & \\
+    \cmd{0}   & \\
+    \cmd{-}   & \\
+    \cmd{' '} & \\
+    \cmd{+}   & \\
     \hline
   \end{tabular}
     \hline
   \end{tabular}
-  \caption{Valori possibili per gli specificatori di conversione in una
-    stringa di formato per l'output.} 
-  \label{tab:file_format_spec}
+  \caption{I valori dei flag per il formato di \func{printf}}
+  \label{tab:file_format_flag}
 \end{table}
 
 
 
 \end{table}
 
 
 
-
+\begin{table}[htb]
+  \centering
+  \begin{tabular}[c]{|l|p{10cm}|}
+    \hline
+    \textbf{Valore} & \textbf{Significato} \\
+    \hline
+    \hline
+    \cmd{hh} & \\
+    \cmd{h}  & \\
+    \cmd{l}  & \\
+    \cmd{ll} & \\
+    \cmd{L}  & \\
+    \cmd{q}  & \\
+    \cmd{j}  & \\
+    \cmd{z}  & \\
+    \cmd{t}  & \\
+    \hline
+  \end{tabular}
+  \caption{Il modificatore di tipo di dato per il formato di \func{printf}}
+  \label{tab:file_format_type}
+\end{table}
 
 
 
 
 
 
@@ -1014,11 +1069,10 @@ che la conclude; gli altri valori, indicati fra parentesi, sono opzionali.
 \label{sec:file_fseek}
 
 Come per i file descriptor è possibile anche con gli stream spostarsi
 \label{sec:file_fseek}
 
 Come per i file descriptor è possibile anche con gli stream spostarsi
-all'interno di un file per effettuare operazioni di lettura o scrittura
-in un punto prestabilito; questo fintanto che l'operazione di
-riposizionamento è supportata dal file sottostante lo stream, quando
-cioè si ha a che fare con quelio che viene detto un file ad
-\textsl{accesso casuale}.
+all'interno di un file per effettuare operazioni di lettura o scrittura in un
+punto prestabilito; questo fintanto che l'operazione di riposizionamento è
+supportata dal file sottostante lo stream, quando cioè si ha a che fare con
+quello che viene detto un file ad \textsl{accesso casuale}.
 
 In GNU/Linux ed in generale in ogni sistema unix-like la posizione nel
 file è espressa da un intero positivo, rappresentato dal tipo
 
 In GNU/Linux ed in generale in ogni sistema unix-like la posizione nel
 file è espressa da un intero positivo, rappresentato dal tipo