Liste des commandes pour la manipulation des fichiers sous Matlab
Ouverture et fermeture d’un fichier
• fid=fopen(‘nomfich.ext’,’permission’) : ouvre un fichier nomfich.ext et retourne un entier identificateur de fichier dans fid
- ‘permission’ =
_
‘r’ ouvre en lecture seulement un fichier existant (par défaut)
_
‘w’ ouvre en écriture seulement un fichier existant ou créé un nouveau fichier;
efface le contenu du fichier
_
‘a’ ouvre en écriture seulement un fichier existant ou créé un nouveau fichier;
le contenu n’est pas effacé place les nouvelles données écrites à la fin du
fichier
_
‘r+’ ouvre en lecture et en écriture un fichier existant place les nouvelles
données écrites en début de fichier et écrase le contenu du fichier
_
‘w+’ ouvre en lecture et en écriture un fichier existant ou crée un nouveau
fichier; efface le contenu du fichier
_
‘a+’ ouvre en lecture et en écriture un fichier existant ou crée un nouveau
fichier; le contenu n’est pas effacé place les nouvelles données écrites à la
fin du fichier
fclose(‘all’)
: ferme tous les fichiers ouverts
Lire des données texte
• A = fscanf(fid, ‘forma’t , taille) :
lit un fichier texte identifié par fid et retourne
les
données dans une matrice A
- ‘format’ : interprétation des données
‘%s’
= interprète une chaîne de caractères
‘%d’
= interprète des entiers
‘%e’,
‘%f’ et ‘%g’ = nombres à virgule flottante
‘%*d’
= passe les valeurs entières dans les données
- taille : étendue des valeurs lues dans le fichier
N =
lit les N premières valeurs du fichier
inf
= lit jusqu’à la fin du fichier (par défaut)
[n
m] = lit n*m éléments du fichier arrangés dans un tableau n*m
• L = fgets(fid) : lit une ligne d’un
fichier texte identifié par fid et l’enregistre
dans
une chaîne de caractères L sans le caractère de fin de ligne
-
retourne -1 si fgets rencontre la fin du
fichier
-
fichiers texte seulement
-
commence la lecture de la ligne à partir de l’indicateur de position
(par défaut, le début du
fichier à son ouverture)
Ecrire des fichiers texte
• fprintf(fid,’format’ ,A) : écrit les données de
la matrice A dans un fichier identifié par fid et retourne le nombre de bytes écrit dans le fichier
- ‘format’ : interprétation des données
‘%s’
= interprète une chaîne de caractères
‘%d’
= interprète des entiers
‘%e’
= notation exponentielle
‘%f’
= valeurs décimales à virgule fixe
‘\n’
= retour à la ligne
‘\t’
= espace tabulation
Exercice 1
1.
Ecrire deux fonctions codch
et decodch qui reçoivent comme paramètres d’entrée une ligne de texte et
une variable numérique. La fonction codch renvoie en sortie une ligne de
texte codé avec le code contenu dans la variable numérique, tandis que la
fonction decodch permet de le décodage (opération inverse).
(Le codage de la ligne consiste par exemple
à faire une opération arithmétique entre la valeur de la variable et le code
ascii de la ligne du texte).
2.
Créer trois fichiers texte
(fich1.txt, fich2.txt et
fich3.txt) ;
3.
Ouvrir le fichier fich1.txt
avec la commande : edit fich1.txt et saisissez quelques lignes de
texte et sauvegarder le contenu.
4.
Ouvrir le fichier fich1.txt
en mode lecture et le fichier fich2.txt en mode écriture (ajout).
Utiliser la fonction codch pour
coder chaque ligne de fich1.txt et envoyer le résultat (texte codé) dans le
fich2.txt. (Utiliser la fonction fgets ou fgetl pour lire les
lignes de texte du fichier)
5.
Vérifier le contenu du
fich2.txt avec la commande type fich2.txt
6.
Utiliser la fonction decodch
pour décoder le contenu du fichier fich2.txt. le résultat de décodage sera
enregistré dans le fichier fich3.txt
Réponse
1.
function B=codch(A,n)
A=double (A);
B=A+n;
B=char(B);
function B=decodch(A,n)
B=double (A)- n;
B=char(B);
2.
a=fopen('fich1.txt','w');
b=fopen('fich2.txt','w');
c=fopen('fich2.txt','w');
// lecture et codage des lignes
de fich1.txt
m=fopen('fich1.txt','r');
n=10;
i=1;
while (i>0)
i=fgets(m);
B=codch(i,n);
fprintf(b,'%s\n',B);
end
z=fopen('fich2.txt','r');
x=fopen('fich3.txt','a');
// lecture des lignes de
fich2.txt et décodage dans fich3.txt
j=1;
while (j>0)
j=fgets(z);
B=decodch(j,n);
fprintf(x,'%s\n',B);
end
0 commentaires:
Enregistrer un commentaire