Texto e fluxos binários

Um fluxo de texto consiste em uma ou mais linhas de texto que podem ser gravados em uma exibição de texto para que possam ser lidos. Quando ele lê a partir de um fluxo de texto, o programa lê uma nova linha no final de cada linha. Quando ele grava em um fluxo de texto, o programa grava uma nova linha para sinalizar o final de uma linha. Para corresponder a convenções diferentes entre ambientes de destino para a representação de texto em arquivos, as funções da biblioteca podem alterar o número e representações de caracteres transmitidos entre o programa e um fluxo de texto.

O posicionamento em um fluxo de texto é limitado. Você pode obter o indicador de posição de arquivo atual chamando fgetpos ou ftell. Você pode posicionar um fluxo de texto em uma posição obtida dessa forma, ou no início ou no final do fluxo, chamando fsetpos ou fseek. Qualquer outra alteração de posição pode não ter suporte.

Para fins de portabilidade máxima, o programa não deve escrever:

  • Arquivos vazios.
  • Caracteres de espaço no final de uma linha.
  • Linhas parciais (omitindo a nova linha no final de um arquivo).
  • Caracteres diferentes dos caracteres imprimíveis, da nova linha e da guia horizontal.

Se você seguir essas regras, a sequência de caracteres que você ler de um fluxo de texto corresponderá à sequência de caracteres que você escreveu, seja como bytes ou como caracteres multibyte. Caso contrário, as funções de biblioteca podem remover um arquivo criado se o arquivo está vazio quando você fechá-lo. Ou, eles podem alterar ou excluir caracteres que você grava no arquivo.

Um fluxo binário consiste em um ou mais bytes de informações arbitrárias. É possível gravar o valor armazenado em um objeto arbitrário para um fluxo binário (orientado a bytes) e ler exatamente o que foi armazenado no objeto quando você o escreveu. As funções de biblioteca não alteram os bytes transmitidos entre o programa e um fluxo binário. No entanto, eles podem, acrescentar um número arbitrário de bytes NULL para o arquivo que você escreve com um fluxo binário. O programa deve lidar com esses bytes extras NULL no final do fluxo binário.

Posicionar em um fluxo binário é bem definido, exceto para o posicionamento relativo ao término do fluxo. Você pode obter e alterar o indicador de posição do arquivo atual da mesma maneira que um fluxo de texto. Os deslocamentos usados por ftell e fseek contam bytes do início do fluxo (que é byte zero), portanto, a aritmética inteira nesses deslocamentos produz resultados previsíveis.

Um fluxo de bytes trata um arquivo como uma sequência de bytes. Dentro do programa, o fluxo é semelhante a mesma sequência de bytes, exceto as possíveis alterações descritas acima.

Confira também

Arquivos e fluxos