Flux texte et binaires
Un flux de texte se compose d'une ou de plusieurs lignes de texte qui peuvent être écrites sur un affichage orienté texte afin qu'elles puissent être lues. Lorsqu’il lit à partir d’un flux de texte, le programme lit une nouvelle ligne à la fin de chaque ligne. Lorsqu’il écrit dans un flux de texte, le programme écrit une nouvelle ligne pour signaler la fin d’une ligne. Pour faire correspondre différentes conventions dans les environnements cibles pour représenter le texte contenu dans les fichiers, les fonctions de la bibliothèque peuvent modifier le nombre et les représentations des caractères transmis entre le programme et un flux de texte.
Le positionnement dans un flux de texte est limité. Vous pouvez obtenir l’indicateur de position de fichier actuel en appelant fgetpos
ou ftell
. Vous pouvez positionner un flux de texte à une position obtenue de cette façon, ou au début ou à la fin du flux, en appelant fsetpos
ou fseek
. Tout autre changement de position risque de ne pas être pris en charge.
Pour une portabilité maximale, le programme ne doit pas écrire :
- Fichiers vides.
- Espaces à la fin d'une ligne.
- Lignes partielles (en omettant la ligne de nouvelle ligne à la fin d’un fichier).
- Caractères autres que les caractères imprimables, le nouveau trait et l’onglet horizontal.
Si vous suivez ces règles, la séquence de caractères que vous lisez à partir d’un flux de texte correspond à la séquence de caractères que vous avez écrites, que ce soit sous forme d’octets ou de caractères multioctets. Sinon, les fonctions de la bibliothèque peuvent supprimer un fichier créé s'il est vide lorsque vous le fermez. Vous pouvez également modifier ou supprimer des caractères que vous écrivez dans le fichier.
Un flux binaire se compose d'un ou de plusieurs octets d'informations aléatoires. Vous pouvez écrire la valeur stockée dans un objet aléatoire dans un flux binaire (orienté octet) et lire exactement le contenu stocké dans l'objet lors de son écriture. Les fonctions de bibliothèque ne modifient pas les octets que vous transmettez entre le programme et un flux binaire. Toutefois, ils peuvent ajouter un nombre arbitraire d’octets NULL
au fichier que vous écrivez avec un flux binaire. Le programme doit traiter ces octets supplémentaires NULL
à la fin du flux binaire.
Le positionnement dans un flux binaire est bien défini, sauf pour le positionnement par rapport à la fin du flux. Vous pouvez obtenir et modifier l'indicateur de position de fichier actuel de la même manière que pour un flux de texte. Les décalages utilisés par ftell
et fseek
comptent les octets du début du flux (qui est zéro d’octet), donc l’arithmétique entier sur ces décalages génère des résultats prévisibles.
Un flux d'octets traite un fichier comme une séquence d'octets. Dans le programme, le flux ressemble à la même séquence d'octets, à l'exception des modifications possibles décrites ci-dessus.