Initiation au langage C les fichiers et structures

Bases sur les fichiers

Un fichier représente tout ce qui est enregistré sur votre disque dur ou presque, on va dire tout ce qui porte un nom. Il est possible de créer, de lire ou d’écrire dans des fichiers. Il faut noter cependant que certains fichiers par contre peuvent être protégés en lecture, en écriture ou les deux.
Afin de ne rien endommager dans notre système, créez à l’aide de NotePad ou de la commande Ms-Dos « edit » un fichier nommé test.txt, dans lequel vous taperez un texte de louanges pour ce superbe cours (à votre libre inspiration).
Voici un petit exemple de la lecture du fichier test.txt.
Exemple #include <conio.h> #include <io.h> #include <fcntl.h>
int main () { int h_fic; char ligne [80]; int nb_car_lus; int i;
/* effacement de l’écran */ clrscr ();
/* Ouverture du fichier */ h_fic = open (« c:\\test.txt « , O_CREAT);
/* Test si fichier ouvert */ if (h_fic == -1) { printf (« Impossible d’ouvrir le fichier »); getch (); return (1); }
while (!eof (h_fic)) { /* Lecture de 80 octets maximum */ nb_car_lus = read (h_fic, ligne, 80);
/* Ecriture de ce qui a ‚t‚ lu */ for (i=0; i<nb_car_lus; i++) { printf (« %c »,ligne [i]); } printf (« \n »);
}
/* Fermeture du fichier */ close (h_fic);
/* Ecrire que c’est terminé */ printf (« \n — Fin —« );
getch (); return (0);
}
Analysons l’ensemble
/* Ouverture du fichier */ h_fic = open (« c:\\test.txt », O_CREAT);
La fonction open permet d’ouvrir un fichier, le second paramètre est son mode d’ouverture, ici O_CREAT signifiant ouverture s’il existe ou création s’il n’existe pas. Par contre O_CREAT seul ne permet pas d’écrire dans le fichier offrant ainsi une sécurité supplémentaire. La fonction open renvoie –1 si l’on a pas réussi à ouvrir notre fichier et renvoie un handle (poignée) sur le fichier sinon.
What is an handle ?
Un lien sur quelque chose. On appelle ceci une poignée car comme avec un sac, vous le prenez par la poignée pour le porter.
Notez la présence de \\ au lieu de \ du fait que \ seul permet la composition de caractère spéciaux (ex \n).
/* Test si fichier ouvert */ if (h_fic == -1) { printf (« Impossible d’ouvrir le fichier »); getch (); return (1); }
La fonction eof permet de savoir si l’on a atteint la fin du fichier. Regardez l’aide pour comprendre le while (!eof (…))
while (!eof (h_fic)) {
La fonction read permet de lire des octets (ici transformés en char). Elle prend pour paramètre le handle de fichier, la zone de mémoire dans laquelle on va recevoir les données et la taille maximale que l’on veut lire (attention au dépassement (cf. chapitre 2)).
/* Lecture de 80 octets maximum */ nb_car_lus = read (h_fic, ligne, 80);
/* Ecriture de ce qui a été lu */
for (i=0; i<nb_car_lus; i++) {
printf (« %c »,ligne [i]);
} printf (« \n »);
}
A ne pas oublier, il faut fermer le fichier après l’avoir ouvert ! /* Fermeture du fichier */ close (h_fic);
/* Ecrire que c’est terminé */ printf (« \n — Fin —« );
getch (); return (0);
}
Très simple non !

Création d’un autre fichier

Reprenez l’exemple précédent et ajouter ceci après le open : h_fic2= open (« c:\\ma_copie.bat », O_CREAT);
N’oubliez pas de déclarer h_fic2.
Ainsi nous allons créer une copie du fichier. int h_fic2;
/* Création d’une copie */ h_fic2 = open (« c:\\ma_copie.txt », O_CREAT);
/* Test si fichier bien créer */ if (h_fic2 == -1) { printf (« Impossible de créer le nouveau fichier »); close (h_fic2); getch (); return (1); }
while (!eof (h_fic)) { /* Coupure */ printf (« \n »);
/* Ecriture dans notre copie de fichier */ write (h_fic2, ligne, nb_car_lus);
}
/* Fermeture du fichier */ close (h_fic);
/* Fermeture de ma copie de fichier */ close (h_fic2);

Cours gratuitTélécharger le cours complet

Télécharger aussi :

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *