Secuencias anchas y de bytes
Una secuencia de bytes trata un archivo como una secuencia de bytes. Dentro del programa, la secuencia es la secuencia de bytes idéntica.
Por el contrario, una secuencia ancha trata un archivo como una secuencia de caracteres multibyte generalizados, lo que puede tener una amplia gama de reglas de codificación. (Los archivos binarios y de texto todavía se leen y escriben como se ha descrito anteriormente). Dentro del programa, el flujo es similar a la secuencia correspondiente de caracteres anchos. Las conversiones entre las dos representaciones se producen dentro de la biblioteca de C estándar. Las reglas de conversión pueden modificarse, en principio, mediante una llamada a setlocale
que modifica la categoría LC_CTYPE
. Cada secuencia ancha determina sus reglas de conversión en el momento en que se convierte en ancha y conserva estas reglas incluso si la categoría LC_CTYPE
cambia más adelante.
El posicionamiento dentro de una secuencia ancha tiene las mismas limitaciones que las secuencias de texto. Además, el indicador de posición de archivo también puede tener que tratar con una codificación dependiente del estado. Normalmente, contiene tanto un desplazamiento de bytes en la secuencia como un objeto de tipo mbstate_t
. Por lo tanto, la única manera confiable de obtener una posición de archivo dentro de una secuencia ancha consiste en llamar a fgetpos
, y la única manera confiable de restaurar una posición obtenida de esta manera consiste en llamar a fsetpos
.