Byte e fluxos largos

Um fluxo de bytes trata um arquivo como uma sequência de bytes. Dentro do programa, o fluxo é a sequência idêntica de bytes.

Por outro lado, um fluxo largo trata um arquivo como uma sequência de caracteres de vários bytes generalizados, que pode ter uma ampla gama de regras de codificação. (Arquivos binários e de texto ainda são lidos e gravados conforme descrito anteriormente.) Dentro do programa, o fluxo se parece com a sequência correspondente de caracteres largos. Conversões entre as duas representações ocorrem dentro da biblioteca C padrão. As regras de conversão podem, em princípio, ser alteradas por uma chamada para setlocale, que altera a categoria LC_CTYPE. Cada fluxo largo determina suas regras de conversão no momento em que se torna orientado à largura e mantém essas regras mesmo se a categoria LC_CTYPE mudar posteriormente.

O posicionamento em um fluxo largo sofre com as mesmas limitações que um fluxo de texto. Além disso, o indicador de posição do arquivo também pode precisar lidar com uma codificação dependente de estado. Normalmente, inclui deslocamento de byte dentro do fluxo e um objeto do tipo mbstate_t. Portanto, o único modo confiável de obter uma posição de arquivo em um fluxo largo é chamando fgetpos; o único modo confiável para restaurar uma posição obtida dessa maneira é chamando fsetpos.

Confira também

Arquivos e Fluxos
setlocale, _wsetlocale