Secuencias binarias y de texto
Una secuencia de texto está formada por una o varias líneas de texto que se pueden escribir en una presentación de texto para que pueda leerlas. Cuando lee desde una secuencia de texto, el programa lee una nueva línea al final de cada línea. Cuando escribe en una secuencia de texto, el programa escribe una nueva línea para indicar el final de una línea. Para hacer coincidir las distintas convenciones entre entornos de destino para representar texto en archivos, las funciones de biblioteca pueden modificar el número y la representación de caracteres que se transmiten entre el programa y una secuencia de texto.
El posicionamiento dentro de una secuencia de texto es limitado. Puede obtener el indicador actual de posición de archivo llamando a fgetpos
o ftell
. Puede colocar una secuencia de texto en una posición obtenida de esta manera, o al principio o al final de la secuencia, llamando a fsetpos
o fseek
. Cualquier otro cambio de posición podría no ser compatible.
Para conseguir la máxima portabilidad, el programa no debe escribir:
- Archivos vacíos.
- Caracteres de espacio al final de una línea.
- Líneas parciales (omitiendo la nueva línea al final de un archivo).
- Caracteres distintos de los caracteres imprimibles, la nueva línea y la pestaña horizontal.
Si sigue estas reglas, la secuencia de caracteres que leyó de una secuencia de texto coincidirá con la secuencia de caracteres que escribió, ya sea como bytes o como caracteres multibyte. De lo contrario, las funciones de biblioteca pueden quitar un archivo creado si el archivo está vacío cuando lo cierra. O bien, pueden modificar o eliminar caracteres que escriba en el archivo.
Una secuencia binaria consta de uno o varios bytes de información arbitraria. Puede escribir el valor almacenado en un objeto arbitrario en una secuencia binaria (orientada a bytes) y leer exactamente lo que estaba almacenado en el objeto al escribirla. Las funciones de biblioteca no modifican los bytes que se transmiten entre el programa y una secuencia binaria. Sin embargo, pueden anexar un número arbitrario de bytes NULL
en el archivo que se escribe con una secuencia binaria. El programa debe tratar estos bytes adicionales NULL
al final de la secuencia binaria.
El posicionamiento dentro de una secuencia binaria está bien definido, excepto el posicionamiento en relación con el final de la secuencia. Puede obtener y modificar el indicador de posición de archivo actual de la misma forma que en el caso de la secuencia de texto. Los desplazamientos usados por ftell
y fseek
count bytes desde el principio de la secuencia (que es cero byte), por lo que la aritmética de enteros en estos desplazamientos produce resultados predecibles.
Una secuencia de bytes trata un archivo como una secuencia de bytes. En el programa, la secuencia es similar a la misma secuencia de bytes, excepto las posibles modificaciones que se han descrito anteriormente.