Cours de Langage C Lecture & écriture dans des fichiers



Documents pareils
Programmation impérative

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

Programmation système I Les entrées/sorties

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

Les fichiers. Chapitre 4

Cours de Système : Gestion de Fichiers

Le langage C. Séance n 4

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)

Algorithmique et Programmation, IMA

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

GESTION DES FICHIERS C/UNIX

Programmation système de commandes en C

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

Cours 14 Les fichiers

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

Introduction au langage C

Conventions d écriture et outils de mise au point

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP

Rappels Entrées -Sorties

URECA Initiation Matlab 2 Laurent Ott. Initiation Matlab 2

Logiciel de base. Première année ENSIMAG

Chap III : Les tableaux

DE L ALGORITHME AU PROGRAMME INTRO AU LANGAGE C 51

SUPPORT DE COURS. Langage C

Stockage du fichier dans une table mysql:

Programmation en langage C

Les chaînes de caractères

Les structures. Chapitre 3

Le prototype de la fonction main()

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

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

Cours Programmation Système

Programmation C. Apprendre à développer des programmes simples dans le langage C

1 Lecture de fichiers

Java Licence Professionnelle CISII,

EPREUVE OPTIONNELLE d INFORMATIQUE CORRIGE

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

Cours 6 : Tubes anonymes et nommés

TP : Gestion d une image au format PGM

Flux de données Lecture/Ecriture Fichiers

Programmation en langage C Eléments de syntaxe

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

Outils pour la pratique

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

Langage Éric Guérin 5 octobre 2010

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

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

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

Cours Informatique 1. Monsieur SADOUNI Salheddine

Chapitre 1 : La gestion dynamique de la mémoire

Programmation système en C/C++

Info0101 Intro. à l'algorithmique et à la programmation. Cours 3. Le langage Java

Gestion des fichiers. Telecom-ParisTech BCI Informatique

Programmation Classique en langage C

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

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

Structure d un programme

Le langage C++ est un langage de programmation puissant, polyvalent, on serait presque tenté de dire universel, massivement utilisé dans l'industrie

COMPARAISONDESLANGAGESC, C++, JAVA ET

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

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

TP Codage numérique des caractères. Un ordinateur ne manipule que des 0 et des 1 : Comment alors code-t-il du texte?

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

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


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

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

La mémoire. Un ordinateur. L'octet. Le bit

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

Langage Java. Classe de première SI

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

Exceptions. 1 Entrées/sorties. Objectif. Manipuler les exceptions ;

Anis ASSÈS Mejdi BLAGHGI Mohamed Hédi ElHajjej Mohamed Salah Karouia

Architecture des ordinateurs

I. Introduction aux fonctions : les fonctions standards

OS Réseaux et Programmation Système - C5

NIMEGUE V3. Fiche technique 3.07 : Sauvegarde / Restauration manuelle

Base de l'informatique. Généralité et Architecture Le système d'exploitation Les logiciels Le réseau et l'extérieur (WEB)

TP 1. Prise en main du langage Python

Initiation à la programmation en Python

Algorithmique & Langage C IUT GEII S1. Notes de cours (première partie) cours_algo_lgc1.17.odp. Licence

Algorithme. Table des matières

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

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

PROJET ALGORITHMIQUE ET PROGRAMMATION II

Algorithmes et Programmes. Introduction à l informatiquel. Cycle de vie d'un programme (d'un logiciel) Cycle de vie d'un programme (d'un logiciel)

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

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

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

Cours 1 : Introduction Ordinateurs - Langages de haut niveau - Application

Cours de Programmation Impérative: Zones de mémoires et pointeurs

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

INITIATION A LA PROGRAMMATION

Codage d information. Codage d information : -Définition-

as Architecture des Systèmes d Information

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

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

Claude Delannoy. 3 e édition C++

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

LES TYPES DE DONNÉES DU LANGAGE PASCAL

Transcription:

Cours de Langage C Lecture & écriture dans des fichiers

Les fichiers Un programme a en général besoin : - De lire des données (texte, nombres, images, sons, mesures, ) - De sauvegarder des résultats (texte, nombres, images, sons, signaux générés, ) Cela se fait en lisant et en écrivant dans des fichiers Pour manipuler un fichier, on utilise un pointeur sur une donnée spécifique dont le type est FILE (structure prédéfinie que nous n avons pas besoin de connaître précisément) : FILE *fichier La variable fichier contiendra l adresse en mémoire du début du fichier 2

Ouverture fermeture de fichiers Ouverture d un fichier à l aide de la fonction fopen : fichier = fopen( C:/Data/fichier1.txt, r ); Cette fonction renvoie un pointeur sur le fichier ouvert. fopen est définie dans le fichier stdio.h par : FILE *fopen (char *nom, char *mode) Mode d ouverture nom est une chaîne de caractères (tableau de caractères) contenant le nom du fichier ou bien un flot de données standard (stdin, ) mode désigne le type de traitement des données - r (read) : lecture e (si le fichier existe) - w (write) : écriture (le fichier est écrasé s il existe et s il n existe pas, il est crée) - a a (append) : écriture àlafind un dun fichier existant 3

Ouverture fermeture de fichiers Où se trouve le fichier ouvert? Dans le répertoire de travail (plus exactement là où est le fichier exécutable.exe) Comment travailler sur un fichier situé ailleurs? Le chemin absolu d accès au fichier peut être donné in extenso (attention les \ de windows deviennent des / en C) fichier = fopen( C:/Data/fichier1.txt, r ); fichier = fopen( fichier1, r ); ) A quoi sert l extension.txt? A rien pour le Langage C. Elle permet en revanche à l OS de l ordinateur de sélectionner le programme permettant d ouvrir le fichier. 4

Ouverture fermeture de fichiers Fermeture d un fichier à l aide de la fonction fclose : Important : Il faut toujours fermer un fichier après l avoir utilisé Afin de libérer la mémoire fclose(fichier) ; fclose est définie dans le fichier stdio.h par : int fclose(file *fichier) ; 5

Écriture lecture de fichiers textes Écriture : Exemple : fprintf(file *fichier,char *proto, ); double a; fprintf(fichier,«%lf»,a); Presque même syntaxe que printf! printf("%lf",a); Lecture : fscanf(file f(file *fichier,char h *proto, ); Exemple : double a; fscanf(fichier,"%lf",&a); Presque même syntaxe que scanf! scanf("%lf",&a); 6

Exemple : écriture dans un fichier include <stdio.h> void main() double a=1.5, b=2.5; FILE *fichier; // Ouverture du fichier en écriture grâce à "w" fichier = fopen("essai.txt","w"); essai.txt } // Verifier que le fichier a bien été ouvert if (fichier!= NULL) // Ecriture fprintf(fichier,"%lf\n",a); " fprintf(fichier,"%lf\n",b); // Fermeture du fichier fclose(fichier); } 7

Exemple : lecture à partir d un fichier #include <stdio.h> void main() int i; double tab[2]; FILE *fichier; } // Ouverture du fichier en lecture grâce à "r"" fichier = fopen("essai.txt","r"); if (fichier!= NULL) for(i=0;i<2;i++) fscanf(fichier,"%lf\n",tab+i); fclose(fichier); } for(i=0;i<2;i++) ; printf("%lf\n",tab[i]); 8

Format d un fichier Les fichiers précédents ont été écrits au format «texte» On a utilisé jusqu ici i les fonctions : fprintf f et fscanff Tout se passe comme si l affichage de la fenêtre console était envoyé dans le fichier. Ou bien comme si le fichier se comportait comme les saisies clavier pour envoyer des données au programme. Les caractères sont stockés avec le code ASCii : American Standard Code for Information Interchange Avec un langage évolué tel que le C : Nous n avons pas à connaître le code ASCii Nous n avons pas à connaître la représentation des nombres dans les mémoires 9

Format d un fichier Lorsqu on a des données numériques, il est souvent plus efficace de recopier directement le contenu de la mémoire donc de les écrire sous forme «binaire». Soit un nombre 1.345643355454E-18 Au format double, il occupe 8 octets Au format ASCII, il occupe 20 octets (1 octet par caractère) On a 2 types de fichiers : fichiers «texte» et «binaire». Le format binaire va occuper beaucoup moins de place en mémoire Comme il s agit d une recopie directe de la mémoire, on n a pas à savoir comment est codé chaque nombre Modes d ouverture de fichiers binaires : - rb (read) : lecture - wb (write) : écriture (le fichier est écrasé s il existe) - ab (append) : écriture à la fin d un fichier existant 10

Écriture lecture de fichiers binaires Ecriture d un bloc de données en binaire int fwrite(void ( id *source, int taille_type, t int nombre, FILE *flot) fwrite : - Ecrit tout un bloc de données en un seul appel - Retourne un entier = nombre d éléments effectivement écrits Exemple : Pointeur sur les données fwrite(tableau,sizeof(float),dim,fichier); Lecture d un dun bloc de données en binaire Pointeur sur le fichier int fread(void *destination, int taille_type, int nombre, FILE *flot) fread : - Lit un bloc de données en un seul appel - Retourne un entier = nombre d éléments effectivement lus Exemple : Pointeur sur les données Pointeur sur le fichier fread(tableau,sizeof(float),dim,fichier);

Exemple : fichiers binaires #define DIM 10000 void main() int i; double sum,tab1[dim],tab2[dim]; FILE *fichier; // Remplissage du tableau for(i=0;i<dim;i++) tab1[i]=i*atan(1); // Ecriture du fichier au format binaire fichier = fopen("essai2 essai2.bin bin","wb"); if (fichier!= NULL) fwrite(tab1,sizeof(double),dim,fichier); fclose(fichier); } // Lecture du fichier fichier = fopen("essai2 essai2.bin bin","rb"); if (fichier!= NULL) fread(tab2,sizeof(double),dim,fichier); fclose(fichier); } } 12

Comparaison : fichiers binaires et fichiers textes Fichiers textes Fichiers binaires Taille Peu compacte compacte Lisible avec un programme courant Lisible ibl avec un programme spécifique Écriture/Lecture par blocs Fonctions oui oui non fopen(mode r,w ou a) fclose() fprintf() fscanf() non oui oui fopen(mode rb, wb ou ab) fclose() fwrite() fread() 13