Les entées / sorties (E/S ou I/O pour Input/Output) s’appliquent sur soit :

  1. les flux standards
    1. entrée standard (stdin, n°0)
    2. sortie standard (stdout, n°1)
    3. sortie d’erreur (stderr, n°2)
  2. des fichiers en utilisant des descripteurs de fichier

Les E/S peuvent se faire en utilisant soit des fonctions de haut-niveaux, soit des fonctions de bas-niveaux.

schema-c.svg

Haut-niveau : fourni par la bibliothèque standard LIBC

Bas-niveau : fourni par le système d’exploitation

Principe général pour faire des E/S :

  1. ouvrir le fichier (en lecture ou en écriture) ⇒ on obtient un descripteur de fichier

  2. opérations de lecture et/ou d’écriture en utilisant le descripteur de fichier

    Les lectures / écritures peuvent se faire de manières formatées ou non.

    Formatées (ou texte) : les données sont converties entre une représentation binaire en mémoire et une représentation texte dans le fichier.

    Non Formatées (ou binaire) : les données sont lues et écrites dans le fichier sous forme binaire.

    Exemple : La valeur 12 représentée en mémoire sur un octet sera présentée en format texte sur 2 caractères : ‘1’ et ‘2’

  3. fermer le descripteur de fichier

    ⚠️ indispensable pour s’assurer que le fichier est bien écrit sur son support

    <aside> 💡

    Les étapes 1 et 3 ne sont pas nécessaires si on utilise les flux standards

    </aside>

Fonctions de haut-niveau