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}
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;
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;
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;
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;
\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
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