Si comincia con l'input formattato e il posizionamento
authorSimone Piccardi <piccardi@gnulinux.it>
Mon, 17 Dec 2001 19:04:02 +0000 (19:04 +0000)
committerSimone Piccardi <piccardi@gnulinux.it>
Mon, 17 Dec 2001 19:04:02 +0000 (19:04 +0000)
filestd.tex

index 92ad0a562bef15a366b2697065defef102d50fa8..c6be8eb040a1a795e22704147ff5ba58063ef3c5 100644 (file)
@@ -968,16 +968,21 @@ parametri che dovranno essere specificati a seguire.
 \subsection{Posizionamento su uno stream}
 \label{sec:file_fseek}
 
 \subsection{Posizionamento su uno stream}
 \label{sec:file_fseek}
 
-Come per i file descriptor è possibile spostarsi all'interno del file
-anche con gli stream. In GNU/Linux ed in generale in ogni sistema
-unix-like la posizione nel file è espressa da un intero positivo,
-rappresentato dal tipo \type{off\_t}, il problema è alcune delle funzioni
-usate per il riposizionamento sugli stream (come \func{ftell} e
-\func{fseek}) originano dalle prime versioni di unix in cui questo tipo
-non era ancora stato definito, e che in altri sistemi non è detto che la
-posizione su un file venga sempre rappresentata con un numero di
-caratteri (ad esempio in VMS può essere rappresentata come numero di
-record, e offset rispetto al record corrente).
+Come per i file descriptor è possibile anche con gli stream spostarsi
+all'interno di un file per effettuare operazioni di lettura o scrittura
+in un punto prestabilito; questo fintanto che l'operazione di
+riposizionamento è supportata dal file sottostante lo stream, quando
+cioè si ha a che fare con quelio che viene detto un file ad
+\textsl{accesso casuale}.
+
+In GNU/Linux ed in generale in ogni sistema unix-like la posizione nel
+file è espressa da un intero positivo, rappresentato dal tipo
+\type{off\_t}, il problema è alcune delle funzioni usate per il
+riposizionamento sugli stream originano dalle prime versioni di unix in
+cui questo tipo non era ancora stato definito, e che in altri sistemi
+non è detto che la posizione su un file venga sempre rappresentata con
+un numero di caratteri (ad esempio in VMS può essere rappresentata come
+numero di record, e offset rispetto al record corrente).
 
 Tutto questo comporta la presenza di diverse funzioni che seguono
 sostanzialmente le stesse operazioni, ma usano parametri di tipo
 
 Tutto questo comporta la presenza di diverse funzioni che seguono
 sostanzialmente le stesse operazioni, ma usano parametri di tipo
@@ -987,17 +992,31 @@ posizione in uno stream sono:
   \headdecl{stdio.h} 
   
   \funcdecl{int fseek(FILE *stream, long offset, int whence)} Sposta la
   \headdecl{stdio.h} 
   
   \funcdecl{int fseek(FILE *stream, long offset, int whence)} Sposta la
-  posizione nello stream secondo quanto specicato tramite \param{offset}
+  posizione nello stream secondo quanto specificato tramite \param{offset}
   e \param{whence}.  
 
   e \param{whence}.  
 
-  \funcdecl{long ftell(FILE *stream)} Legge la posizione attuale nello stream.
-  
   \funcdecl{void rewind(FILE *stream)} Riporta la posizione nello stream
   all'inizio del file.
 \end{functions}
 
   \funcdecl{void rewind(FILE *stream)} Riporta la posizione nello stream
   all'inizio del file.
 \end{functions}
 
+L'uso di \func{fseek} è del tutto analogo a quello di \func{lseek} per i
+file descriptor, ed i parametri, a parte il tipo, hanno lo stesso
+significato; in 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. 
 
 
+Per leggere la posizione corrente invece la funzione \func{ftell}, il
+cui prototipo è:
+\begin{prototype}{stdio.h}{long ftell(FILE *stream)} 
+  Legge la posizione attuale nello stream.
+  
+  \bodydesc{La funzione restituisce la posizione corrente, o -1 in caso
+    di fallimento, che può esser dovuto sia al fatto che il file non
+    supporta il riposizionamento che al fatto che la posizione non può
+    essere espressa con un \type{long int}}
+\end{prototype}
 
 
+  
 
 
 \section{Funzioni avanzate}
 
 
 \section{Funzioni avanzate}