Cours de Programmation Impérative Lecture et écriture dans les fichiers texte

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.

Cours de Système : Gestion de Fichiers

Programmation système I Les entrées/sorties

Conventions d écriture et outils de mise au point

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

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

Le langage C. Séance n 4

Unix/Linux I. 1 ere année DUT. Université marne la vallée

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

Algorithmique et Programmation, IMA

Structure fonctionnelle d un SGBD

Les fichiers. Chapitre 4

EPREUVE OPTIONNELLE d INFORMATIQUE CORRIGE

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

DE L ALGORITHME AU PROGRAMME INTRO AU LANGAGE C 51

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

Le prototype de la fonction main()

Cours Programmation Système

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

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

Rappels Entrées -Sorties

Cours 14 Les fichiers

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)

Introduction au langage C

Système de Gestion de Fichiers

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

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

Chap III : Les tableaux

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

URECA Initiation Matlab 2 Laurent Ott. Initiation Matlab 2

SYSTÈME DE GESTION DE FICHIERS

Les arbres binaires de recherche

Licence Sciences et Technologies Examen janvier 2010

Les chaînes de caractères

SYSTÈME DE GESTION DE FICHIERS SGF - DISQUE

Introduction à Linux (pour le HPC) «Linux 101» Présentation :

Ordinateur Logiciel Mémoire. Entrées/sorties Périphériques. Suite d'instructions permettant de réaliser une ou plusieurs tâche(s), de résoudre un

Administration de Parc Informatique TP07 : Installation de Linux Debian

GESTION DES FICHIERS C/UNIX

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

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

Chapitre 1 : La gestion dynamique de la mémoire

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

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

Programmation système de commandes en C

Personnes ressources Tice. Académie de Rouen

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

Programmation système en C/C++

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

Ophcrack - Windows XP/Vista

Informatique Générale

PROJET ALGORITHMIQUE ET PROGRAMMATION II

Outils pour la pratique

Mon premier rpm. 7 juin Avant de commencer RPM URPMI RPMBUILD... 2

TS 35 Numériser. Activité introductive - Exercice et démarche expérimentale en fin d activité Notions et contenus du programme de Terminale S

Les structures de données. Rajae El Ouazzani

NIMEGUE V3. Fiche technique 3.07 : Sauvegarde / Restauration manuelle

Session 8: Android File System

Les structures. Chapitre 3

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

4. Utilisation d un SGBD : le langage SQL. 5. Normalisation

TP3 : Manipulation et implantation de systèmes de fichiers 1

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

Techniques de stockage. Techniques de stockage, P. Rigaux p.1/43

Cours Langage C/C++ Programmation modulaire

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

Architecture des ordinateurs

UEO11 COURS/TD 1. nombres entiers et réels codés en mémoire centrale. Caractères alphabétiques et caractères spéciaux.

Structure de base d un ordinateur

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP

Manuel de System Monitor

Introduction aux Systèmes et aux Réseaux, Master 2 CCI

FANTEC DB-229US Manuel de l'utilisateur

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

Comme chaque ligne de cache a 1024 bits. Le nombre de lignes de cache contenu dans chaque ensemble est:

6605 MFP 3615 MFP. Sommaire : Paramètres généraux. Réglages de l Horloge et des Bacs. Paramètre Copie (par défaut) Paramètres Réseaux (IP)

GUIDE PRATIQUE déplacements professionnels temporaires en France et à l étranger

Chapitre 3 : Système de gestion de fichiers

Système clients serveur Kwartz Vulgarisation, identification, dossier personnel

Systèmes d exploitation

Introduction aux Systèmes et aux Réseaux

Les Boitiers de Vote Electroniques (Clickers)

COMPTAPL V2 sur clé USB 2

LiveUSB clefisn. Meilland jean claude et Kbida Abdellatif. 16 septembre 2012

TD séances n 3 et n 4 Répertoires et Fichiers sous Unix

PG208, Projet n 3 : Serveur HTTP évolué

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

Mémoire de l'imprimante

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

Découverte de l ordinateur. Partie matérielle

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

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

Gérer ses fichiers et ses dossiers avec l'explorateur Windows. Février 2013

TP : Gestion d une image au format PGM

USTL - Licence ST-A 1ère année Initiation à la programmation TP 1

Organiser le disque dur Dossiers Fichiers

Playing with ptrace() for fun and profit

Les débordements de tampons et les vulnérabilités de chaîne de format 1

Transcription:

Cours de Programmation Impérative Lecture et écriture dans les fichiers texte Julien David A101 - david@lipn.univ-paris13.fr Julien David (A101 - david@lipn.univ-paris13.fr) 1 / 29

Résumé Jusqu ici nos programmes peuvent lire et écrire de l information située dans la RAM interagir avec un terminal (printf, scanf) On peut en réalité faire beaucoup plus lire et écrire sur d autres support (disque dur, clés usb) interagir avec d autres programmes interagir avec d autres périphériques (carte réseau, carte graphique, carte son, imprimante,...) Julien David (A101 - david@lipn.univ-paris13.fr) 2 / 29

Résumé Jusqu ici nos programmes peuvent lire et écrire de l information située dans la RAM interagir avec un terminal (printf, scanf) On peut en réalité faire beaucoup plus lire et écrire sur d autres support (disque dur, clés usb) interagir avec d autres programmes interagir avec d autres périphériques (carte réseau, carte graphique, carte son, imprimante,...) Julien David (A101 - david@lipn.univ-paris13.fr) 2 / 29

D i sfi`qfi u`e D u rffl Julien David (A101 - david@lipn.univ-paris13.fr) 3 / 29

Le disque dur Organisation des répertoires sur le disque dur Les répertoires sont organisée en forme d arborescence. Comme tout les arbres, celui ci possède une racine. Sous linux, on la note / Observons l organisation sur cet ordinateur... Julien David (A101 - david@lipn.univ-paris13.fr) 4 / 29

Systèmes de fichiers /bin : éxécutables commun aux utilisateur (ls, cd, rm,...). /boot : ensemble de fichiers nécéssaires lors du démarrage de l ordinateur. /etc : fichiers de configuration de programme installés. /home : répertoires des utilisateurs. /proc : informations sur le processeur. /tmp : fichiers temporaires créés par dess processus en cours d exécution. /usr : ensemble de librairies, programmes, fichiers communs aux utilisateurs (stdio.h, gedit, emacs, gcc,...). Julien David (A101 - david@lipn.univ-paris13.fr) 5 / 29

Répertoire courant Répertoire courant Comme son nom l indique, il s agit du répertoire dans lequel on est en train de travailler. Pour changer de répertoire courant, on utilise la commandecd Julien David (A101 - david@lipn.univ-paris13.fr) 6 / 29

Chemins Chemin absolu Le chemin absolu est le chemin qui mène de la racine / au fichier/répertoire auquel on souhaite accéder. Pour connaître le chemin absolu du répertoire courant, on utilise la commandepwd Chemin relatif Le chemin absolu est le chemin qui mène du répertoire courant au fichier auquel on souhaite accéder. Julien David (A101 - david@lipn.univ-paris13.fr) 7 / 29

Les droits Les différents droits Lecture : r Écriture : w Exécution : x Les différents utilisateurs L utilisateur : u (user), Son groupe : g (group), Les autres : o (other). Julien David (A101 - david@lipn.univ-paris13.fr) 8 / 29

Les droits Observer les droits Pour connaître les droits des fichiers du répertoire courant, on utilise la commandels -l Changer les droits Pour changer les droits d un fichier/répertoire, on utilise la commandechmod Julien David (A101 - david@lipn.univ-paris13.fr) 9 / 29

L`eṡ fˇi`c h i`eˇr s `e nffl C Julien David (A101 - david@lipn.univ-paris13.fr) 10 / 29

Les fichiers enc L idée Tout comme pour les interactions avec le terminal : le programme n interagit pas directement avec le disque dur. c est le système d exploitation qui se charge de la communication entre les différents composants. pour qu un programme accède à un fichier, il demande au système de lui donner un accès. le système va alors créer un espace mémoire ou le programme pourra lire et/ou écrire. Cet espace mémoire est appelé tampon, ou buffer. On va voir aujourd hui comment manipuler cet espace mémoire. Note : voir le programmeterminal Julien David (A101 - david@lipn.univ-paris13.fr) 11 / 29

Les fichiers : un nouveau type de variable Le typefile le typefile permet de manipuler des fichiers. il s agit d une structure qui contient l adresse du tampon, la position de latête de lecture/écriture dans le fichier. les droits que le programme possède sur le fichier. En pratique On utilise toujours unfile * Julien David (A101 - david@lipn.univ-paris13.fr) 12 / 29

Les fonctions : ouverture d un fichier Ouvrir un fichier FILE *fopen(const char *path, const char *mode); Arguments const char *path : chemin relatif ou absolu par rapport au répertoire courant. const char *mode : mode d ouverture du fichier. Julien David (A101 - david@lipn.univ-paris13.fr) 13 / 29

Les fonctions : ouverture d un fichier Commmande Mode Position Fichier inexistant r lecture Début renvoit NULL r+ lecture+écriture Début renvoit NULL w écriture Début Crée le fichier. w+ lecture+écriture Début Crée le fichier. a lecture+écriture Fin Crée le fichier. a+ lecture+écriture R : Début W :Fin Crée le fichier. Note : programmefichier.c Julien David (A101 - david@lipn.univ-paris13.fr) 14 / 29

Les fonctions : ouverture d un fichier Valeur de retour defopen fopen renvoit doncnull si la fonction n a pas réussi à ouvrir le fichier. il faut TOUJOURS tester la valeur de retour de cette fonction. Sinon le programme a de forte chance de planter. Julien David (A101 - david@lipn.univ-paris13.fr) 15 / 29

Les fonctions : fermeture d un fichier La fonctionfclose int fclose(file *fp); La fonctionfopen effectue unmalloc pour créer le tampon/buffer qui va servir à interagir avec le disque dur. La fonctionfclose permet de libérer ce bloc mémoire et si besoin, force le système à écriture les données du tampon qui n ont pas encore été transférée sur le disque dur. Julien David (A101 - david@lipn.univ-paris13.fr) 16 / 29

Lecture et écriture dans un fichier La fonctionfprintf Fonctionne comme la fonctionprintf, excepté que le premier argument de la fonction est le fichier dans lequel on souhaite écrire. La fonctionfscanf Fonctionne comme la fonctionscanf, excepté que le premier argument de la fonction est le fichier dans lequel on souhaite lire. Julien David (A101 - david@lipn.univ-paris13.fr) 17 / 29

Lecture et écriture dans un fichier Les limites de l écriture On peut écrire dans le fichier tant qu il y a de la place sur le disque dur. on s autorise à considérer que ça n arrivera pas. Les limites de la lecture On lit dans le fichier jusqu à ce qu il soit terminé. la fonctionint feof(file *F) permet de tester si on est à la fin du fichier. Note : voir programmeecriture puislecture Julien David (A101 - david@lipn.univ-paris13.fr) 18 / 29

Les différents types de fichiers Les deux familles de fichiers les fichiers textes. les fichiers binaires. Julien David (A101 - david@lipn.univ-paris13.fr) 19 / 29

Les différents types de fichiers Les fichiers texte peuvent être manipulée directement par un éditeur. on peut utiliser les fonctionsfprintf etfscanf Julien David (A101 - david@lipn.univ-paris13.fr) 20 / 29

Les formats de fichiers Formattage des fichiers Lorsqu un programme lit les informations dans un fichier : on veut pouvoir lire (accéder) rapidement l information sans avoir à la traiter. par rapidement on entend que l écriture du programme soit rapide mais aussi que l exécution le soit. on a donc besoin que l information contenue dans le fichier soit formatée au maximum. Julien David (A101 - david@lipn.univ-paris13.fr) 21 / 29

Exemple Le relevé de notes On veut faire un programme qui manipule des notes d étudiants. Chaque étudiant a un fichier à son nom, qui contient Le nom des matières. Des notes. Des commentaires. On veut pouvoir stocker toute ces informations après les avoir lues. 1 s t r u c t matiere s{ 2 char nom; 3 double note ; 4 char commentaire ; 5 }; 6 typedef s t r u c t matiere s matiere t ; Julien David (A101 - david@lipn.univ-paris13.fr) 22 / 29

Exemple Le relevé de notes On veut faire un programme qui manipule des notes d étudiants. Chaque étudiant a un fichier à son nom, qui contient Le nom des matières. Des notes. Des commentaires. On veut pouvoir stocker toute ces informations après les avoir lues. 1 s t r u c t matiere s{ 2 char nom; 3 double note ; 4 char commentaire ; 5 }; 6 typedef s t r u c t matiere s matiere t ; Julien David (A101 - david@lipn.univ-paris13.fr) 22 / 29

Un premier fichier Programmation Impérative 20 Très bien Logique 15 Algèbre 2 08 étudiant hostile à Bourbaki ISDL 18 De nombreux problèmes Quel espace mémoire réserver pour stocker les chaînes de caractères? Comment savoir que 08 est la note de Algèbre 2? Comment gère t on les lignes où il n y a pas de commentaires? Julien David (A101 - david@lipn.univ-paris13.fr) 23 / 29

Un premier fichier Programmation Impérative 20 Très bien Logique 15 Algèbre 2 08 étudiant hostile à Bourbaki ISDL 18 De nombreux problèmes Quel espace mémoire réserver pour stocker les chaînes de caractères? Comment savoir que 08 est la note de Algèbre 2? Comment gère t on les lignes où il n y a pas de commentaires? Julien David (A101 - david@lipn.univ-paris13.fr) 23 / 29

Solution 1 : les caractères séparateur Programmation Impérative :20 :Très bien : Logique :15 : : Algèbre 2 :08 :étudiant hostile à Bourbaki : ISDL :18 : : Découpage de l information On décide d un ou plusieurs caractères (ici : ) qui vont délimiter les différents champs. Inconvénient : il faut faire le découpage à la main. Avantage : ne prends pas excessivement plus de place en mémoire. Julien David (A101 - david@lipn.univ-paris13.fr) 24 / 29

Solution 2 : les champs de taille fixe Programmation Impérative 20 Très bien Logique 15 Algèbre 2 08 étudiant hostile à Bourbaki ISDL 18 Découpage de l information On décide d un ou plusieurs caractères (ici ; ) qui vont délimiter les différents champs. Inconvénient : le fichier prends plus de place sur le disque dur. Avantage : on va voir que c est beaucoup plus facile à lire Julien David (A101 - david@lipn.univ-paris13.fr) 25 / 29

Une fonction de plus fread size t fread(void *ptr, size t size, size t nmemb, FILE *stream); Lit dans le fichierstream un nombre d octets size nmemb. Copie le contenu à l adresse pointée parptr. Cette fonction permet de charger et de découper très rapidement le contenu d un fichier. Note : voir le programmelecture rapide. Julien David (A101 - david@lipn.univ-paris13.fr) 26 / 29

Les en-têtes Un en-tête, ouheader est un ensemble d informations que l on place au début du fichier et qui donne des informations sur : le format dans lequel est écrit le fichier. les informations qu il contient. Par exemple on peut indiquer combien de lignes le fichier contient, ce qui va faciliter l écriture du programme. pour une image ou une vidéo, on précise ses dimensions, le format (bmp,jpeg,gif,png,mpeg,avi). Julien David (A101 - david@lipn.univ-paris13.fr) 27 / 29

Solution avec en-tête 4 Programmation Impérative 20 Très bien Logique 15 Algèbre 2 08 étudiant hostile à Bourbaki ISDL 18 Découpage de l information La première ligne constitue l en-tête. On sait donc dès le début combien d espace mémoire il va falloir allouer et comment utiliser l appel àfread. Note : voir le programmelecture propre. Julien David (A101 - david@lipn.univ-paris13.fr) 28 / 29

Conclusion Pour que les interactions fichiers/programmes soient optimales Il faut que le format du fichier soit réfléchi, que la disposition de l information soit organisée, normalisée. On a tout juste entrevue quelques possibilités de format de fichiers. il nous reste à voir les fichiers binaires. pour cela, il faut d abord comprendre comment on code l information en binaire. Julien David (A101 - david@lipn.univ-paris13.fr) 29 / 29