Si prosegue con le modifiche per l'inclusione degli esempi di codice.
[gapil.git] / filestd.tex
index d69d7d42172d8ac3408681e8f1ec5eef98822cc6..b928e0dc2de3556ce622cbab3748b7055313746c 100644 (file)
@@ -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:
-\begin{lstlisting}[stepnumber=0,frame=]{}
-    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}.
@@ -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:
-%\footnotesize
-\begin{lstlisting}[stepnumber=0,frame=]{}
-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:
-%\footnotesize
-\begin{lstlisting}[stepnumber=0,frame=]{}
-struct histogram {
-    int nbins; 
-    double max, min;
-    double *bin;
-} histo; 
-
-int WriteStruct(FILE *stream, struct histogram *histo) 
-{
-    if ( fwrite(histo, 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. 
 
@@ -906,14 +875,7 @@ 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:
-\begin{lstlisting}[stepnumber=0,frame=]{}
-    size_t n = 0; 
-    char *ptr = NULL;
-    int nread;
-    FILE * file;
-    ...    
-    nread = getline(&ptr, &n, file);
-\end{lstlisting}
+\includecodesnip{listati/getline.c}
 e per evitare memory leak\index{memory leak} occorre ricordarsi di liberare
 \var{ptr} con una \func{free}.