Programmation avancée. Les Fichiers en C. Walter Rudametkin. https://rudametw.github.

Documents pareils
Dans le chapitre 1, nous associions aux fichiers ouverts des descripteurs de fichiers par lesquels nous accédions aux fichiers.

Le système de gestion des fichiers, les entrées/sorties.

Programmation système I Les entrées/sorties

Programmation impérative

1. Structure d un programme C. 2. Commentaire: /*..texte */ On utilise aussi le commentaire du C++ qui est valable pour C: 3.

Chap III : Les tableaux

Bases de programmation. Cours 5. Structurer les données

Les fichiers. Chapitre 4

Programmation système de commandes en C

Algorithmique et Programmation, IMA

Les chaînes de caractères

1/24. I passer d un problème exprimé en français à la réalisation d un. I expressions arithmétiques. I structures de contrôle (tests, boucles)

Cours de Système : Gestion de Fichiers

Le langage C. Séance n 4

Compression de Données - Algorithme de Huffman Document de Conception

GESTION DES FICHIERS C/UNIX

SUPPORT DE COURS. Langage C

Le prototype de la fonction main()

Brefs rappels sur la pile et le tas (Stack. / Heap) et les pointeurs

Les structures de données. Rajae El Ouazzani

Le Langage C Version 1.2 c 2002 Florence HENRY Observatoire de Paris Université de Versailles florence.henry@obspm.fr

Programmation en langage C

Chapitre 1 : La gestion dynamique de la mémoire

Travaux pratiques. Compression en codage de Huffman Organisation d un projet de programmation

Introduction au langage C

Programmation en langage C d un µcontrôleur PIC à l aide du compilateur C-CCS Sommaire

Centre CPGE TSI - Safi 2010/2011. Algorithmique et programmation :

IN Cours 1. 1 Informatique, calculateurs. 2 Un premier programme en C

Conventions d écriture et outils de mise au point

Cours de programmation avancée. Le langage C. Université du Luxembourg

Cours 14 Les fichiers

Cours d Algorithmique-Programmation 2 e partie (IAP2): programmation 24 octobre 2007impérative 1 / 44 et. structures de données simples

Programmation en langage C Eléments de syntaxe

Projet d informatique M1BI : Compression et décompression de texte. 1 Généralités sur la compression/décompression de texte

Rappels Entrées -Sorties

DE L ALGORITHME AU PROGRAMME INTRO AU LANGAGE C 51

Les structures. Chapitre 3

EPREUVE OPTIONNELLE d INFORMATIQUE CORRIGE

Gestion des fichiers. Telecom-ParisTech BCI Informatique

Pensez à vous inscrire... si ce n est pas encore fait

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP

PROJET ALGORITHMIQUE ET PROGRAMMATION II

TP2 : tableaux dynamiques et listes chaînées

Cours d initiation à la programmation en C++ Johann Cuenin

TRAVAUX PRATIQUES Programmation Système Langage C / Système UNIX. 2 e année Génie Informatique

MISE A NIVEAU INFORMATIQUE LANGAGE C - EXEMPLES DE PROGRAMMES. Université Paris Dauphine IUP Génie Mathématique et Informatique 2 ème année

Programmation Classique en langage C

Cours de C/C++ par la pratique. Hugues Talbot

Langage C. Patrick Corde. 22 juin Patrick Corde ( Patrick.Corde@idris.fr ) Langage C 22 juin / 289

TP : Gestion d une image au format PGM

Arguments d un programme

Cours Programmation Système

Programmation C. J.-F. Lalande. 15 novembre 2012

3IS - Système d'exploitation linux - Programmation système

INITIATION A LA PROGRAMMATION


Algorithmique, Structures de données et langage C

Langage Éric Guérin 5 octobre 2010

Structure d un programme

Cours d Algorithmique et de Langage C v 3.0

Claude Delannoy. 3 e édition C++

URECA Initiation Matlab 2 Laurent Ott. Initiation Matlab 2

Représentation d un entier en base b

Suivant les langages de programmation, modules plus avancés : modules imbriqués modules paramétrés par des modules (foncteurs)

OS Réseaux et Programmation Système - C5

#include <stdio.h> #include <stdlib.h> struct cell { int clef; struct cell *suiv; };

Cours de C. Petits secrets du C & programmation avancée. Sébastien Paumier

Stockage du fichier dans une table mysql:

INF111. Initiation à la programmation impérative en C amini/cours/l1/inf111/ Massih-Reza Amini

1 Lecture de fichiers

LEs processus coopèrent souvent pour traiter un même problème. Ces

Cours intensif Java. 1er cours: de C à Java. Enrica DUCHI LIAFA, Paris 7. Septembre Enrica.Duchi@liafa.jussieu.fr

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

Cours 6 : Tubes anonymes et nommés

Structure d un programme et Compilation Notions de classe et d objet Syntaxe

Initiation. àl algorithmique et à la programmation. en C

Programmation Structurée Langage C

Programmation système en C/C++

BTS IRIS Cours et Travaux Pratiques. Programmation C. A. Lebret, TSIRIS, Lycée Diderot, 1995/06. en conformité avec le référentiel du BTS IRIS

V- Manipulations de nombres en binaire

Programmation en C. École Nationale Supérieure de Techniques Avancées. Pierre-Alain Fouque et David Pointcheval

Introduction à la programmation Travaux pratiques: séance d introduction INFO0201-1

COMPARAISONDESLANGAGESC, C++, JAVA ET

Travaux Dirigés n 1 : chaînes de caractères

Cours de C++ François Laroussinie. 2 novembre Dept. d Informatique, ENS de Cachan

Introduction au Langage de Programmation C

6 - Le système de gestion de fichiers F. Boyer, UJF-Laboratoire Lig, Fabienne.Boyer@imag.fr

Flux de données Lecture/Ecriture Fichiers

Éléments d informatique Cours 3 La programmation structurée en langage C L instruction de contrôle if

Plan du cours. Historique du langage Nouveautés de Java 7

Introduction à la programmation orientée objet, illustrée par le langage C++ Patrick Cégielski

Les arbres binaires de recherche

Premiers Pas en Programmation Objet : les Classes et les Objets

Prénom : Matricule : Sigle et titre du cours Groupe Trimestre INF1101 Algorithmes et structures de données Tous H2004. Loc Jeudi 29/4/2004

03/04/2007. Tâche 1 Tâche 2 Tâche 3. Système Unix. Time sharing

Le langage C. Introduction, guide de reference

UE Programmation Impérative Licence 2ème Année

Outils pour la pratique

Programmation client-serveur sockets - RPC

TP n 2 Concepts de la programmation Objets Master 1 mention IL, semestre 2 Le type Abstrait Pile

Transcription:

1 / 18 Programmation avancée Les Fichiers en C Walter Rudametkin Walter.Rudametkin@polytech-lille.fr https://rudametw.github.io/teaching/ Bureau F011 Polytech Lille 23 février 2016

2 / 18 Les fichiers en C Pas de fichiers dans le langage C Bibliothèque standard libc.so/libc.a : inclure le fichier entête <stdio.h> Fichier C = une suite d octets (= flot) Pas de fichiers typés Fichiers texte Les octets représentent des caractères codant les données(souvent le très limité ASCII, mais aussi le populaire et recommandé UTF-8) Standard Éditables Imprimables

3 / 18 Fichiers Binaires Octets représentent la copie exacte des données en mémoire sur un système donné Non standard Non éditables Non imprimables Mais lecture / écriture plus rapides (pas d analyse) En général, plus compacts ex: 654875 = 6 octets (char), 2/4 octets (short/int) Pas d attribut texte ou binaire sur un fichier (dépend de l interprétation des octets) N intervient pas à la déclaration Lié aux opérations applicables

4 / 18 Le type FILE F A 0 A 1 A 2 EOF Défini dans <stdio.h> Structure C contenant Identification du fichier associé (descripteur) Position du curseur dans le fichier Tampon de lecture / écriture Indication de mode d ouverture... Opérations sont effectuées sur un FILE * fourni à l ouverture

5 / 18 Fichiers texte: ouverture Défini dans <stdio.h> FILE * fopen(char *nom, char *mode) où $ & r : lecture mode = w : création/écriture % a : allongement lecture : écriture: allongement : F A 0 A 1 A 2 EOF F F A 0 A 1 A 2 A n-1 A n EOF

Fichiers texte: ouverture/fermeture Retour FILE * si tout va bien NULL si erreur (ex: fichier inexistant, pas les droits de lecture ou écriture,... ) Fermeture fclose(file *fp) Déconnecte fp du fichier physique 6 / 18

7 / 18 Fichiers texte: exemple 1 #include <stdio.h> 2 3 int main(){ 4 FILE *fp = fopen("toto.txt", "r"); 5 if (fp == NULL) printf("toto.txt inaccessible: fp=%p\n",fp); 6 else printf("toto.txt accessible: fp=%p\n",fp); 7 8 if (fp!= NULL){ 9 printf("fermer toto\n"); 10 fclose(fp); 11 } 12 } si toto.txt existe toto.txt accessible:fp=0x1d12010 Fermer toto si toto.txt n existe pas toto.txt inaccessible: fp=(nil)

8 / 18 Fichiers texte: utilisation Généralisation des manipulations effectuées sur l entrée/sortie standard (stdin, stdout) Dans <stdio.h> entrée standard : FILE * stdin sortie standard : FILE * stdout Connexion à l exécution aux entrées / sorties standard fournies par le système (console par défaut, redirigeables par < >) Lectures écritures à partir de la position suivant le curseur

9 / 18 Fichiers texte: lecture char getc (FILE *fp) getchar() ô getc(stdin) int fscanf(file *fp, char *format,...) scanf(... ) ô fscanf(stdin,... ) Retourne le nombre d items lus char * fgets(char *chaine, int taille, FILE *fp) int feof(file *fp) Retourne une valeur différent à zéro si la fin du fichier a été rencontrée lors d une opération de lecture (valeur lue indéterminée)

Fichiers texte: mode écriture/allongement int putc(char c, FILE *fp) putchar(c) ô putc(c, stdout) int fprintf(file *fp, char *format,...) int fputs(char *chaine, FILE *fp) 10 / 18

11 / 18 Fichiers texte: exemple 1 #include <stdio.h> 2 3 int main() { 4 FILE *fp1, *fp2; 5 if ((fp1 = fopen("titi.txt", "r"))!= NULL) { 6 if ((fp2 = fopen("titibis.txt","w"))!= NULL) { 7 int c = getc(fp1); 8 while (!feof(fp1)){ 9 putc(c, fp2); 10 c = getc(fp1); 11 } 12 } 13 } 14 if (fp1!= NULL) fclose(fp1); 15 if (fp2!= NULL) fclose(fp2); 16 }

Fichiers binaires: ouverture Octets représentent la copie exacte du codage des données en mémoire Ouverture FILE *fopen (char *nom, char *mode) où $ rb : lecture & wb : mode = ab : rb+ : %... création/écriture allongement lecture/écriture lecture : écriture: F A 0 A 1 A 2 EOF F lecture/écriture: F A 0 A 1 A 2 EOF 12 / 18

Fichiers binaires: fermeture/écriture Fermeture (idem fichiers texte) fclose(file *fp) int feof(file *fp) Écriture (mode création ou lecture/écriture) int fwrite(void *pt, int taille, int nb, FILE *fp) Écrit sur le fichier fp, à partir de la position suivant le curseur, nb objets, chacun de taille taille, qui se trouvent contiguëment dans la zone mémoire pointée par pt. Utilisation courante : FILE *fp; <T> x; fwrite(&x, sizeof(x), 1, fp); 13 / 18

14 / 18 Fichiers binaires: écriture Mode lecture/écriture char x =? ; fwrite(&x, 1, 1, fp);

15 / 18 Fichiers binaires: lecture int fread(void *pt, int taille, int nb, FILE *fp) Lire nb objets de taille <taille> et les copier dans l espace pointé par pt Utilisation courante : <T> x; fread(&x, sizeof(<t>), 1, fp);

16 / 18 Fichiers binaire: lecture 1 #include <stdio.h> 2 3 typedef struct{ 4 5 char nom[30]; int age; 6 } Personne; 7 8 int main(){ 9 Personne P; 10 FILE * fich = fopen("personnes","rb"); 11 if(fich!=null){ 12 fread(&p, sizeof(personne), 1, fich); 13 while (!feof(fich)) { 14 printf("%s %d\n", P.nom, P.age); 15 fread(&p, sizeof(personne), 1, fich); 16 } 17 fclose(fich); 18 } 19 }

17 / 18 Fichiers binaires: accès direct int fseek(file *fp, long déplacement, int origine) $ & SEEK_SET : début où origine = SEEK_CUR : position courant % SEEK_END : fin Positionne le curseur pour la prochaine lecture ou écriture Position = déplacement + origine Usage courant : fseek(fp, i*sizeof(<t>), SEEK_SET);

18 / 18 Fichiers: conclusion Texte ou binaire n est pas un attribut de fichier Un fichier texte peut être exploité en binaire comme simple suite d octets ex : fseek(fp, i*sizeof(char), SEEK_SET); ex : utilisation de fread ou fwrite sur un fichier texte Exploitation d un fichier binaire en texte?????