Prova di endianess
[gapil.git] / filestd.tex
index 78d67c21b4eb24d3df0488fc90a204bebc021663..d5c5ce1fde5a42db471be139083d5ba3b7fe0a6a 100644 (file)
@@ -1,6 +1,6 @@
 %% filestd.tex
 %%
 %% filestd.tex
 %%
-%% Copyright (C) 2000-2002 Simone Piccardi.  Permission is granted to
+%% Copyright (C) 2000-2003 Simone Piccardi.  Permission is granted to
 %% copy, distribute and/or modify this document under the terms of the GNU Free
 %% Documentation License, Version 1.1 or any later version published by the
 %% Free Software Foundation; with the Invariant Sections being "Prefazione",
 %% copy, distribute and/or modify this document under the terms of the GNU Free
 %% Documentation License, Version 1.1 or any later version published by the
 %% Free Software Foundation; with the Invariant Sections being "Prefazione",
@@ -117,10 +117,7 @@ Nelle \acr{glibc} \var{stdin}, \var{stdout} e \var{stderr} sono
 effettivamente tre variabili di tipo \ctyp{FILE *} che possono essere
 usate come tutte le altre, ad esempio si può effettuare una redirezione
 dell'output di un programma con il semplice codice:
 effettivamente tre variabili di tipo \ctyp{FILE *} che possono essere
 usate come tutte le altre, ad esempio si può effettuare una redirezione
 dell'output di un programma con il semplice codice:
-\begin{lstlisting}[labelstep=0,frame=,indent=1cm]{}
-    fclose(stdout);
-    stdout = fopen("standard-output-file", "w");
-\end{lstlisting}
+\includecodesnip{listati/redir_stdout.c}
 ma in altri sistemi queste variabili possono essere definite da macro, e
 se si hanno problemi di portabilità e si vuole essere sicuri, diventa
 opportuno usare la funzione \func{freopen}.
 ma in altri sistemi queste variabili possono essere definite da macro, e
 se si hanno problemi di portabilità e si vuole essere sicuri, diventa
 opportuno usare la funzione \func{freopen}.
@@ -487,40 +484,12 @@ In genere si usano queste funzioni quando si devono trasferire su file
 blocchi di dati binari in maniera compatta e veloce; un primo caso di uso
 tipico è quello in cui si salva un vettore (o un certo numero dei suoi
 elementi) con una chiamata del tipo:
 blocchi di dati binari in maniera compatta e veloce; un primo caso di uso
 tipico è quello in cui si salva un vettore (o un certo numero dei suoi
 elementi) con una chiamata del tipo:
-%\footnotesize
-\begin{lstlisting}[labelstep=0,frame=,indent=1cm]{}
-int WriteVect(FILE *stream, double *vec, size_t nelem) 
-{
-    int size, nread;
-    size = sizeof(*vec);
-    if ( (nread = fwrite(vec, size, nelem, stream)) != nelem) {
-        perror("Write error");
-    }
-    return nread;
-}
-\end{lstlisting}
-%\normalsize
+\includecodesnip{listati/WriteVect.c}
 in questo caso devono essere specificate le dimensioni di ciascun
 elemento ed il numero di quelli che si vogliono scrivere. Un secondo
 caso è invece quello in cui si vuole trasferire su file una struttura;
 si avrà allora una chiamata tipo:
 in questo caso devono essere specificate le dimensioni di ciascun
 elemento ed il numero di quelli che si vogliono scrivere. Un secondo
 caso è invece quello in cui si vuole trasferire su file una struttura;
 si avrà allora una chiamata tipo:
-%\footnotesize
-\begin{lstlisting}[labelstep=0,frame=,indent=1cm]{}
-struct histogram {
-    int nbins; 
-    double max, min;
-    double *bin;
-} histo; 
-
-int WriteStruct(FILE *stream, struct histogram *histo) 
-{
-    if ( fwrite(vec, sizeof(*histo), 1, stream) !=1) {
-        perror("Write error");
-    }
-    return nread;
-}
-\end{lstlisting}
-%\normalsize
+\includecodesnip{listati/WriteStruct.c}
 in cui si specifica la dimensione dell'intera struttura ed un solo
 elemento. 
 
 in cui si specifica la dimensione dell'intera struttura ed un solo
 elemento. 
 
@@ -906,16 +875,9 @@ e \var{*n} 
 necessaria a contenere la linea. In tutti i casi si ottiene dalla funzione un
 puntatore all'inizio del testo della linea letta. Un esempio di codice può
 essere il seguente:
 necessaria a contenere la linea. In tutti i casi si ottiene dalla funzione un
 puntatore all'inizio del testo della linea letta. Un esempio di codice può
 essere il seguente:
-\begin{lstlisting}[labelstep=0,frame=,indent=1cm]{}
-    size_t n = 0; 
-    char *ptr = NULL;
-    int nread;
-    FILE * file;
-    ...    
-    nread = getline(&ptr, &n, file);
-\end{lstlisting}
-e per evitare memory leak occorre ricordarsi di liberare \var{ptr} con
-una \func{free}.
+\includecodesnip{listati/getline.c}
+e per evitare memory leak\index{memory leak} occorre ricordarsi di liberare
+\var{ptr} con una \func{free}.
 
 Il valore di ritorno della funzione indica il numero di caratteri letti
 dallo stream (quindi compreso il newline, ma non lo zero di
 
 Il valore di ritorno della funzione indica il numero di caratteri letti
 dallo stream (quindi compreso il newline, ma non lo zero di
@@ -1002,7 +964,7 @@ si 
    \cmd{\%X} &\ctyp{unsigned int}& Stampano un intero in formato esadecimale,
                                    rispettivamente con lettere minuscole e
                                    maiuscole. \\
    \cmd{\%X} &\ctyp{unsigned int}& Stampano un intero in formato esadecimale,
                                    rispettivamente con lettere minuscole e
                                    maiuscole. \\
-   \cmd{\%f} &\ctyp{unsigned int}& Stampa un numero in virgola mobile con la
+   \cmd{\%f} &\ctyp{double}      & Stampa un numero in virgola mobile con la
                                    notazione a virgola fissa \\
    \cmd{\%e}, 
    \cmd{\%E} &\ctyp{double} & Stampano un numero in virgola mobile con la
                                    notazione a virgola fissa \\
    \cmd{\%e}, 
    \cmd{\%E} &\ctyp{double} & Stampano un numero in virgola mobile con la
@@ -1182,7 +1144,7 @@ restituito (si ricordi quanto detto in \secref{sec:proc_var_passing} a
 proposito dei \textit{value result argument}) l'indirizzo della stringa
 allocata automaticamente dalle funzioni. Occorre inoltre ricordarsi di
 invocare \func{free} per liberare detto puntatore quando la stringa non serve
 proposito dei \textit{value result argument}) l'indirizzo della stringa
 allocata automaticamente dalle funzioni. Occorre inoltre ricordarsi di
 invocare \func{free} per liberare detto puntatore quando la stringa non serve
-più, onde evitare memory leak.
+più, onde evitare memory leak\index{memory leak}.
 
 Infine una ulteriore estensione GNU definisce le due funzioni \func{dprintf} e
 \func{vdprintf}, che prendono un file descriptor al posto dello stream. Altre
 
 Infine una ulteriore estensione GNU definisce le due funzioni \func{dprintf} e
 \func{vdprintf}, che prendono un file descriptor al posto dello stream. Altre
@@ -1620,7 +1582,7 @@ accade per \func{getc} e \func{putc}) sono realizzate come macro.
 
 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
 
 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; per questo motivo le \acr{glibc} provvedono al
+abbastanza noioso; per questo motivo le \acr{glibc} forniscono al
 programmatore pigro un'altra via\footnote{anche questa mutuata da estensioni
   introdotte in Solaris.} da poter utilizzare per disabilitare in blocco il
 locking degli stream: l'uso della funzione \funcd{\_\_fsetlocking}, il cui
 programmatore pigro un'altra via\footnote{anche questa mutuata da estensioni
   introdotte in Solaris.} da poter utilizzare per disabilitare in blocco il
 locking degli stream: l'uso della funzione \funcd{\_\_fsetlocking}, il cui