• Aucun résultat trouvé

Langage C Lecture et écriture dans des fichiers texte (ASCII)

N/A
N/A
Protected

Academic year: 2022

Partager "Langage C Lecture et écriture dans des fichiers texte (ASCII)"

Copied!
12
0
0

Texte intégral

(1)

Langage C

Lecture et écriture dans des

fichiers texte (ASCII)

(2)

Lecture dans un fichier

#include <stdio.h>

int main() {

int i;

double tab[2] = {2.14, 5.36};

FILE* fichier;

fichier = fopen("essai.txt","r");

if (fichier != NULL) {

for(i=0;i<2;i++)

fscanf(fichier,"%lf",tab+i);

fclose(fichier);

}

for(i=0;i<2;i++)

printf("%lf\n",tab[i]);

return 0;

(3)

Ecriture dans un fichier

#include <stdio.h>

int main() {

double a=1.5, b=2.5;

FILE* fichier;

fichier = fopen("essai.txt","w");

if (fichier != NULL) {

fprintf(fichier,"%lf\n",a);

fprintf(fichier,"%lf\n",b);

fclose(fichier);

}

return 0;

(4)

Les fichiers

Un programme a souvent besoin :

❖ de lire des données (texte, nombres, images, mesures …)

❖ de sauvegarder des données (texte, nombres, images, mesures …) Cela se fait en lisant et en écrivant dans des fichiers.

Deux types de fichiers existent :

❖ les fichiers de données “brutes” écrits en binaire, non “lisibles” directement par l’humain.

❖ les fichiers de données écrits au format texte (appelé aussi format ASCII),

directement lisibles par l’humain.

(5)

Le type FILE

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. C’est le nom “interne” du fichier.

(6)

Ouverture de fichiers

Le nom “interne” du fichier est utile au programme mais n’est pas pratique à employer pour un utilisateur quelconque.

Les noms de fichiers auxquels nous sommes habitués sont des chaînes de caractères comme essai.txt, C:/Data/fichier1.txt” … Ces noms sont appelés noms “externes” de fichiers.

Le lien entre le nom “interne” du fichier et son nom “externe” se fait à l’ouverture du fichier avec la fonction fopen :

fichier = fopen(“C:/Data/fichier1.txt”,”r”);

nom interne nom externe mode d’ouverture

(7)

Ouverture de fichiers

fopen est définie dans le fichier stdio.h par :

FILE *fopen (char *nom, char *mode)

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 (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” (append) : écriture à la fin d’un fichier existant

(8)

Ouverture 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.

(9)

Fermeture de fichiers

Il faut toujours fermer un fichier après l’avoir utilisé afin de libérer la mémoire et de provoquer le transfert des données.

Fermeture d’un fichier à l’aide de la fonction fclose : fclose(fichier) ;

fclose est définie dans le fichier stdio.h par :

int fclose(FILE *fichier) ;

(10)

Ecriture : fprintf(FILE *fichier,char *proto,…);

exemple :

double a;

fprintf(fichier,“%lf”,a);

Tout se passe comme si on envoyait la donnée a dans un fichier au lieu de l’envoyer à l’écran.

Lecture/écriture dans des fichiers texte

format données à écrire

Lecture : fscanf(FILE *fichier,char *proto,…);

exemple :

double a;

fscanf(fichier,“%lf”,&a);

Tout se passe comme si on lisait la donnée a dans un fichier au lieu de la

lire au clavier.

(11)

Lecture dans un fichier

#include <stdio.h>

int main() {

int i; double tab[2] = {2.14, 5.36};

FILE* fichier;

// Ouverture du fichier en lecture grâce à "r"

fichier = fopen("essai.txt","r");

// Vérification de l’ouverture du fichier if (fichier != NULL)

{

for(i=0;i<2;i++)

fscanf(fichier,"%lf",tab+i); // Lecture fclose(fichier); // Fermeture du fichier }

for(i=0;i<2;i++)

printf("%lf\n",tab[i]);

(12)

Ecriture dans un fichier

#include <stdio.h>

int main() {

double a=1.5, b=2.5;

FILE* fichier;

// Ouverture du fichier en écriture grâce à "w"

fichier = fopen("essai.txt","w");

// Vérification de l’ouverture du fichier if (fichier != NULL)

{

fprintf(fichier,"%lf\n",a); // Ecriture fprintf(fichier,"%lf\n",b); // Ecriture

fclose(fichier); // Fermeture du fichier

}

return 0;

}

Références

Documents relatifs

[r]

Création d’une image PGM On souhaite à présent modifier la fonction précédente pour qu’elle prenne en paramètre un tableau de données de type ​int qui correspondra aux

Pour tester votre fonction, on pourra utiliser les fichiers suivants : - data30.txt qui contient 30 valeurs entières séparées par un retour à la ligne, dont les valeurs vont de -5 à

Ecrire un programme C permettant de créer, à partir du fichier « ETUDIANT.DAT», supposé déjà créé (voir ci-dessus), le fichier de texte «ADMIS.TXT» des étudiants qui

Les fichiers de type texte (voir

Le suffixe dta est l'abrégé du mot &#34;data&#34; (données) qui est souvent utilisé pour désigner un fichier qui contient des données. Le suffixe &#34;c&#34; désigne un fichier

•  “format“: une chaine de caractère précisant comment interpréter les données reçues à stocker aux adresses &amp;exp1, &amp;exp2,

XI-3 Exemples: estimation de la densité d’une loi continue (hist(), density()). La densité f d’une variable continue