Flussi di testo e binariText and Binary Streams

Un flusso di testo è costituito da uno o più righe di testo che possono essere scritte in una visualizzazione orientata al testo in modo da poter essere lette.A text stream consists of one or more lines of text that can be written to a text-oriented display so that they can be read. Durante la lettura da un flusso di testo, il programma legge un NL (nuova riga) alla fine di ogni riga.When reading from a text stream, the program reads an NL (newline) at the end of each line. Quando si scrive in un flusso di testo, il programma scrive un NL per segnalare la fine di una riga.When writing to a text stream, the program writes an NL to signal the end of a line. Per soddisfare le convenzioni diverse tra ambiente di destinazione per la rappresentazione di testo nei file, le funzioni di libreria possono alterare il numero e le rappresentazioni di caratteri trasmessi tra il programma e un flusso di testo.To match differing conventions among target environments for representing text in files, the library functions can alter the number and representations of characters transmitted between the program and a text stream.

Pertanto, il posizionamento all'interno di un flusso di testo è limitato.Thus, positioning within a text stream is limited. È possibile ottenere l'indicatore di posizione corrente chiamando fgetpos o ftell.You can obtain the current file-position indicator by calling fgetpos or ftell. È possibile inserire un flusso di testo in una posizione ottenuta in questo modo o all'inizio o alla fine del flusso, chiamando fsetpos o fseek.You can position a text stream at a position obtained this way, or at the beginning or end of the stream, by calling fsetpos or fseek. Qualsiasi altra modifica della posizione potrebbe non essere supportata correttamente.Any other change of position might well be not supported.

Per la massima portabilità, il programma non deve scrivere:For maximum portability, the program should not write:

  • File vuoti.Empty files.

  • Spazi alla fine di una riga.Space characters at the end of a line.

  • Righe parziali (omettendo il NL alla fine di un file).Partial lines (by omitting the NL at the end of a file).

  • caratteri diversi dai caratteri stampabili, NL e HT (tabulazione orizzontale).characters other than the printable characters, NL, and HT (horizontal tab).

    Seguendo queste regole, la sequenza dei caratteri letti da un flusso di testo (ad esempio byte o caratteri multibyte) corrisponderà alla sequenza di caratteri scritta nel flusso di testo quando si è creato il file.If you follow these rules, the sequence of characters you read from a text stream (either as byte or multibyte characters) will match the sequence of characters you wrote to the text stream when you created the file. In caso contrario, le funzioni di libreria possono rimuovere il file creato se il file è vuoto quando lo si chiude.Otherwise, the library functions can remove a file you create if the file is empty when you close it. Oppure possono modificare o eliminare i caratteri che si scrivono nel file.Or they can alter or delete characters you write to the file.

    Un flusso binario è costituito da uno o più byte di informazioni arbitrarie.A binary stream consists of one or more bytes of arbitrary information. È possibile scrivere il valore memorizzato in un oggetto arbitrario in un flusso binario (orientato ai byte) e leggere esattamente ciò che è stato memorizzato nell'oggetto quando è stato scritto.You can write the value stored in an arbitrary object to a (byte-oriented) binary stream and read exactly what was stored in the object when you wrote it. Le funzioni di libreria non modificano i byte che si trasmettono tra il programma e un flusso binario.The library functions do not alter the bytes you transmit between the program and a binary stream. Tuttavia, possono aggiungere un numero arbitrario di byte null al file che si scrive con un flusso binario.They can, however, append an arbitrary number of null bytes to the file that you write with a binary stream. Il programma deve gestire questi byte null aggiuntivi alla fine di ogni flusso binario.The program must deal with these additional null bytes at the end of any binary stream.

    Pertanto, il posizionamento in un flusso binario è ben definito, eccetto per il posizionamento relativo alla fine del flusso.Thus, positioning within a binary stream is well defined, except for positioning relative to the end of the stream. È possibile ottenere e modificare l'indicatore di posizione corrente del file allo stesso modo di un flusso di testo.You can obtain and alter the current file-position indicator the same as for a text stream. Inoltre, gli offset usati da ftell e da fseek contano i byte dall'inizio del flusso (ovvero dal byte zero), pertanto l'aritmetica basata su interi in questi offset restituisce risultati prevedibili.Moreover, the offsets used by ftell and fseek count bytes from the beginning of the stream (which is byte zero), so integer arithmetic on these offsets yields predictable results.

    Un flusso di byte considera un file come una sequenza di byte.A byte stream treats a file as a sequence of bytes. Nel programma, il flusso è simile alla sequenza di byte stessa, ad eccezione delle possibili modifiche descritte in precedenza.Within the program, the stream looks like the same sequence of bytes, except for the possible alterations described above.

Vedere ancheSee Also

File e flussiFiles and Streams