Flussi di testo e binari

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. Quando legge da un flusso di testo, il programma legge una nuova riga alla fine di ogni riga. Quando scrive in un flusso di testo, il programma scrive una nuova riga per segnalare la fine di una riga. 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.

Il posizionamento all'interno di un flusso di testo è limitato. È possibile ottenere l'indicatore di posizione del file corrente chiamando fgetpos o ftell. È possibile posizionare un flusso di testo in una posizione ottenuta in questo modo o all'inizio o alla fine del flusso chiamando fsetpos o fseek. Qualsiasi altra modifica della posizione potrebbe non essere supportata correttamente.

Per garantire la portabilità massima, il programma non deve scrivere:

  • File vuoti.
  • Spazi alla fine di una riga.
  • Righe parziali (omettendo la nuova riga alla fine di un file).
  • Caratteri diversi dai caratteri stampabili, dalla nuova riga e dalla scheda orizzontale.

Se si seguono queste regole, la sequenza di caratteri letti da un flusso di testo corrisponderà alla sequenza di caratteri scritti, sia come byte che come caratteri multibyte. In caso contrario, le funzioni di libreria possono rimuovere il file creato se il file è vuoto quando lo si chiude. In alternativa, possono modificare o eliminare caratteri scritti nel file.

Un flusso binario è costituito da uno o più byte di informazioni arbitrarie. È 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. Le funzioni di libreria non modificano i byte trasmessi tra il programma e un flusso binario. Tuttavia, possono aggiungere un numero arbitrario di NULL byte al file scritto con un flusso binario. Il programma deve gestire questi byte aggiuntivi NULL alla fine del flusso binario.

Il posizionamento all'interno di un flusso binario è ben definito, ad eccezione del posizionamento relativo alla fine del flusso. È possibile ottenere e modificare l'indicatore di posizione corrente del file allo stesso modo di un flusso di testo. Gli offset utilizzati da ftell e fseek conteggio dei byte dall'inizio del flusso (ovvero zero byte), quindi l'aritmetica integer su questi offset produce risultati prevedibili.

Un flusso di byte considera un file come una sequenza di byte. Nel programma, il flusso è simile alla sequenza di byte stessa, ad eccezione delle possibili modifiche descritte in precedenza.

Vedi anche

File e flussi