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}
 
-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
@@ -987,17 +992,31 @@ posizione in uno stream sono:
   \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}.  
 
-  \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}
 
+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}