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} con conseguente sovrascrittura di altre varibili e
+dimensioni di \param{str} con conseguente sovrascrittura di altre variabili e
possibili buffer overflow; per questo motivo si consiglia l'uso
dell'alternativa:
\begin{prototype}{stdio.h}
% [n. parametro $] [flag] [[larghezza] [. precisione]] [tipo] conversione
\end{verbatim}
\end{center}
-in cui tutti i valori tranne il \cmd{\%} e lo specificatatore di conversione
+in cui tutti i valori tranne il \cmd{\%} e lo specificatore di conversione
sono opzionali (e per questo sono indicati fra parentesi quadre); si possono
usare più elementi opzionali, nel qual caso devono essere specificati in
questo ordine:
\textbf{Valore} & \textbf{Significato} \\
\hline
\hline
- \cmd{hh} & una conversione intera corriponde a un \type{char} con o senza
+ \cmd{hh} & una conversione intera corrisponde a un \type{char} con o senza
segno, o il puntatore per il numero dei parametri \cmd{n} è di
tipo \type{char}.\\
- \cmd{h} & una conversione intera corriponde a uno \type{short} con o
+ \cmd{h} & una conversione intera corrisponde a uno \type{short} con o
senza segno, o il puntatore per il numero dei parametri \cmd{n}
è di tipo \type{short}.\\
- \cmd{l} & una conversione intera corriponde a un \type{long} con o
+ \cmd{l} & una conversione intera corrisponde a un \type{long} con o
senza segno, o il puntatore per il numero dei parametri \cmd{n}
è di tipo \type{long}, o il carattere o la stringa seguenti
sono in formato esteso.\\
- \cmd{ll} & una conversione intera corriponde a un \type{long long} con o
+ \cmd{ll} & una conversione intera corrisponde a un \type{long long} con o
senza segno, o il puntatore per il numero dei parametri \cmd{n}
è di tipo \type{long long}.\\
\cmd{L} & una conversione in virgola mobile corrisponde a un
l'indirizzo di un puntatore ad una stringa di caratteri, in cui verrà
restituito (si ricordi quanto detto in \secref{sec:proc_var_passing} a
proposito dei \textit{value result argument}) l'indirizzo della stringa
-allogata automaticamente dalle funzioni. Occorre onoltre ricordarsi di
+allogata automaticamente dalle funzioni. Occorre inoltre ricordarsi di
invocare \func{free} per liberare detto puntatore quando la stringa non serve
più, onde evitare memory leak.
soggette ad errori, e considerato anche il fatto che è estremamente macchinoso
recuperare in caso di fallimento nelle corrispondenze, l'input formattato non
è molto usato. In genere infatti quando si ha a che fare con un input
-relativamente semplice si preferisce usare l'input di linea ed effetture
+relativamente semplice si preferisce usare l'input di linea ed effettuare
scansione e conversione di quanto serve direttamente con una delle funzioni di
conversione delle stringhe; se invece il formato è più complesso diventa più
facile utilizzare uno strumento come il \cmd{flex} per generare un
particolare \param{whence} assume gli stessi valori già visti in
\secref{sec:file_lseek}. La funzione restituisce 0 in caso di successo e -1
in caso di errore. La funzione \func{rewind} riporta semplicemente la
-posizione corrente all'inzio dello stream, ma non esattamente equivalente ad
+posizione corrente all'inizio dello stream, ma non esattamente equivalente ad
una \code{fseek(stream, 0L, SEEK\_SET)} in quanto vengono cancellati anche i
flag di errore e fine del file.
procedura può comportare dei pesanti costi in termini di prestazioni. Per
questo motivo abbiamo visto in come per tutte le funzioni di I/O non
formattato esistano delle versioni \code{\_unlocked} (alcune previste dallo
-standard POSIX stesso, altre aggiunte come estenzioni dalle \acr{glibc}) che
+standard POSIX stesso, altre aggiunte come estensioni dalle \acr{glibc}) che
possono essere usate in tutti questi casi\footnote{in certi casi dette
funzioni possono essere usate, visto che sono molto più efficiente, anche in
caso di necessità di locking, una volta che questo sia stato acquisito
\func{putc}) queste versioni possono essere realizzate come macro, e sono
pertanto in grado di garantire prestazione enormemente più elevate.
-La sostituizione di tutte le funzioni di I/O con le relative versioni
+La sostituzione di tutte le funzioni di I/O con le relative versioni
\code{\_unlocked} in un programma che non usa i thread è però un lavoro
abbastanza noioso, e che appesantisce il codice; per questo motivo le
\acr{glibc} provvedono un'altra via per poter utilizzare disabilitare il