X-Git-Url: https://gapil.gnulinux.it/gitweb/?p=gapil.git;a=blobdiff_plain;f=filestd.tex;h=d69d7d42172d8ac3408681e8f1ec5eef98822cc6;hp=78d67c21b4eb24d3df0488fc90a204bebc021663;hb=1bdb3c6f5316edaf8e9943a99c210ecc0ec70751;hpb=9b0f636834e8d92e87131bbb99d7d846bab1421a diff --git a/filestd.tex b/filestd.tex index 78d67c2..d69d7d4 100644 --- a/filestd.tex +++ b/filestd.tex @@ -117,7 +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}[labelstep=0,frame=,indent=1cm]{} +\begin{lstlisting}[stepnumber=0,frame=]{} fclose(stdout); stdout = fopen("standard-output-file", "w"); \end{lstlisting} @@ -488,7 +488,7 @@ 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]{} +\begin{lstlisting}[stepnumber=0,frame=]{} int WriteVect(FILE *stream, double *vec, size_t nelem) { int size, nread; @@ -505,7 +505,7 @@ 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]{} +\begin{lstlisting}[stepnumber=0,frame=]{} struct histogram { int nbins; double max, min; @@ -514,7 +514,7 @@ struct histogram { int WriteStruct(FILE *stream, struct histogram *histo) { - if ( fwrite(vec, sizeof(*histo), 1, stream) !=1) { + if ( fwrite(histo, sizeof(*histo), 1, stream) !=1) { perror("Write error"); } return nread; @@ -906,7 +906,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}[labelstep=0,frame=,indent=1cm]{} +\begin{lstlisting}[stepnumber=0,frame=]{} size_t n = 0; char *ptr = NULL; int nread; @@ -914,8 +914,8 @@ essere il seguente: ... nread = getline(&ptr, &n, file); \end{lstlisting} -e per evitare memory leak occorre ricordarsi di liberare \var{ptr} con -una \func{free}. +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 @@ -1002,7 +1002,7 @@ si \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 @@ -1182,7 +1182,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 -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 @@ -1620,7 +1620,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 -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