PDF Introduction au langage C

Rappel de l’épisode précédent

• Il n’existe pas de type prédéfini pour les chaînes de caractères en C mais une convention:
– tableau de caractères
– terminateur de chaîne ()
• L’accès aux chaînes peut se faire caractère par caractère en utilisant des pointeurs sur caractère, ou en utilisant des fonctions de la bibliothèque standard (string.h):
– entrées/sorties: puts, gets, printf, scanf
– taille des chaînes: strlen
– copie de chaînes: strcpy, strncpy
– concaténation de chaînes: strcat, strncat
– comparaison de chaînes: strcmp

Rappels sur les fichiers

• Type d’archivage
– Forme binaire:
• recopie des données telles qu’elles sont en mémoire
• ne peut être relue que dans un environnement utilisant le même codage  des données
– Forme formatée:
• suite d’octets contenant des codes de caractères
• ne peut être relue que dans un environnement utilisant le même codage  de caractères: beaucoup plus portable que la forme binaire
• Type d’accès
– Accès séquentiel:
• on accède aux données (en lecture et écriture) dans l’ordre dans lequel elles apparaissent
– Accès direct:
• on accède aux données (en lecture et écriture) par leur numéro d’ordre
• les enregistrements (blocs de données) doivent être de la même taille
• possible uniquement sur certains supports (ex: pas sur les bandes magnétiques)

Les fichiers en C

• Les fichiers sont considérés comme des suites d’octets quelconque (pas de notion d’enregistrements)
• Les entrées-sorties en C sont un cas particulier de fichiers (avec stdin et stdout comme flux)
• En plus des fonctions d’entrées-sorties
(clavier/écran), C dispose de fonction permettant d’écrire et de lire dans des fichiers sans formatage (données binaires)
• Support pour l’accès séquentiel et l’accès direct aux données sur disque

Notion de flux

• Au moment de son ouverture, un fichier est associé à un nom interne qui est un pointeur sur une structure de type FILE
• Une variable de type (FILE *) s’appelle un flux
• Les propriétés d’un flux incluent notamment:
– un pointeur à l’intérieur du fichier
– un indicateur d’erreur
– un indicateur de fin de fichier
La norme n’impose pas que des flux de fichiers puissent être copiés

Types de fichiers

• La norme n’impose pas de distinctions entre fichiers binaires et fichiers formatés (texte)
• L’implémentation du compilateur peut donc si elle le souhaite distinguer les deux formats
• On peut ensuite appliquer n’importe quelles opérations, indépendamment du mode d’ouverture:
– transfert binaire: fread, fwrite
– transfert formaté: fscanf, fprintf, fgets, fputs
– transfert mixte: fputc, fgetc
• Règle à suivre:
– pour des fichiers qui seront réutilisés ailleurs, on utilise le mode texte afin d’assurer le transcodage entre code interne et code externe
– pour des fichiers qui ne seront manipulés que par des programmes C dans la même implémentation, on peut utiliser le mode binaire..

Si le lien ne fonctionne pas correctement, veuillez nous contacter (mentionner le lien dans votre message)
Cours C/C++ (1.44 MB) (Cours PDF)
Introduction au langage C

Télécharger aussi :

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *