« Programmation C++/Les fichiers » : différence entre les versions

m
Bot: Retouches cosmétiques
m (Bot: Retouches cosmétiques)
{{C++ débutant}}
== Le cours du chapitre 13 : Les fichiers ==
__TOC__
 
== Généralité sur les fichiers ==
*La règle générale pour créer un fichier est la suivante :
** il faut l'ouvrir en écriture.
** on ferme le fichier.
 
== Fichiers textes ou binaires ==
Il existe 2 types de fichiers :
* les fichiers textes qui sont des fichiers lisibles par un simple éditeur de texte.
Pour les amateurs de troll, n'hésitez pas à soutenir que cstdio est bien meilleur que fstream et vous pouvez entamer une discussion sans fin qui durera plusieurs mois. Succès garanti !
 
== Utilisation de cstdio ==
=== La fonction FILE * fopen(const char * filename,char * mode) ===
Cette fonction permet d'ouvrir un fichier en lecture ou en écriture. filename est un tableau de char contenant le fichier à écriture. Le paramètre mode permettra de spécifier le mode d'ouverture : lectute ou écriture, texte ou binaire.
** mode vaut "wb" pour ouvrir en écriture un fichier binaire. Si le fichier n'existe pas, il est créé.
La fonction fopen envoie le pointeur NULL s'il n'a pas été possible d'ouvrir le fichier. Si tout s'est bien passé, elle renvoie un pointeur vers une structure FILE. Ce pointeur servira à écrire ou lire dans le fichier, ainsi qu'à le fermer.
 
=== La fonction fclose(FILE *) ===
cette fonction permet de fermer un fichier, qu'il soit ouvert en lecture ou en écriture. On passe en paramètre àcette fonction ne pointeur FILE * fourni par la fonction fopen(...).
 
=== Les fichiers binaires ===
* '''La fonction fwrite(const void * buffer, int size,int nb, FILE * f) :'''<br/>
Cette fonction écrit nb élements de size octets (soit nb*size octets) à partir du pointeur buffer (dans la RAM) vers le fichier f qui doit être ouvert en écriture. Il s'agit donc d'un transferts d'octets de la RAM dans un fichier.
Dans ce programme, on ouvre le fichier binaire nommé toto.xyz en écriture. Si on a réussi à ouvrir le fichier, on lit un entier, un double un car, puis un tableau de 6 entiers et finalement un tableau de 10 char.
 
=== Les fichiers textes ===
* la fonction fprintf(FILE *f, const char * format,...)
La fonction fprintf permet d'écrire en mode texte dans un fichier différentes données. On n'oubliera pas de laisser un espace entre les données pour pouvoir les relire (ou un passage à la ligne). <br/>
Dans ce programme, on ouvre le fichier binaire nommé toto.txt en lecture. Si on a réussi à ouvrir le fichier, on lit un entier, un double, un char, puis un tableau de 6 entiers et finalement une chaîne de caractères.
 
== Utilisation de fstream ==
=== Les fichiers textes ===
*'''La classe ofstream :'''<br/>
Il s'agit d'un fichier ouvert en écriture : pour créer un tel fichier il suffit d'appeler le constructeur qui a en paramètre le nom du fichier : par exemple '''ofstream f("toto.txt");'''.<br/>
}
</pre>
=== Les fichiers binaires ===
*'''La classe ofstream :'''<br/>
Pour ouvrir en écriture un fichier binaire, il suffit d'appeler le constructeur qui a en paramètre le nom du fichier et le mode d'ouverture et fixer ce deuxième paramètre à ios::out | ios::binary: par exemple '''ofstream f("toto.xyz",ios::out | ios::binary);'''.<br/>
12 783

modifications