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

aucun résumé des modifications
(→‎Les fichiers binaires : Suppression de strcpy (t2, "AZERTYUIO"); qui faisait erreur. Testé ok.)
Aucun résumé des modifications
 
== Fichiers textes ou binaires ==
Il existe 2deux types de fichiers :
* les fichiers textes qui sont des fichiers lisibles par un simple éditeur de texte.
* les fichiers binaires dont les données correspondent en général à une copie bit à bit du contenu de la RAM. Ils ne sont pas lisibles avec un éditeur de texte.
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.
* '''La fonction fread(const void * buffer, int size,int nb, FILE * f) :'''<br/>
Cette fonction lit nb élementséléments de size octets (soit nb*size octets) à partir du fichier f (qui doit être ouvert en lecture) vers le pointeur buffer (dans la RAM). Il s'agit donc d'un transferts d'octets d'un fichier vers la RAM.
 
* '''Exemple : écriture du fichier'''
"%lf" ==> indique un double<br/>
"%3.7lf" ==> indique un double avec 3 chiffres avant la virgule et 7 après.<br/>
"%s" ==> indique une chaine de caractères sans expaceespace.
 
 
 
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.
 
=== Encodage ===
L'encodage des fichiers peut être précisé en paramètre<ref>https://msdn.microsoft.com/fr-fr/library/yeby3zcb.aspx</ref> :
FILE *fp = fopen("newfile.txt", "rt+, ccs=UNICODE");
FILE *fp = fopen("newfile.txt", "rt+, ccs=UTF-8");
FILE *fp = fopen("newfile.txt", "rt+, ccs=UTF-16LE");
 
== Utilisation de fstream ==
*'''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/>
Pour savoir si le fichier a bien été ouvert en écriture la méthode ''is_open()'' renvoie ''true'' si le fichier est effectivement ouvert.
 
Pour écrire dans le fichier on utilise l'opérateur << sans oublier d'écrire des séparateurs dans le fichier texte.
*'''La classe ifstream :'''<br/>
Il s'agit d'un fichier ouvert en lecture : pour créer un tel fichier il suffit d'appeler le constructeur qui a en paramètre le nom du fichier : par exemple '''ifstream f("toto.txt");'''.<br/>
Pour savoir si le fichier a bien été ouvert en lecture la méthode ''is_open()'' renvoie ''true'' si le fichier est effectivement ouvert.
 
Pour lire dans le fichier on utilise l'opérateur >>.
 
*'''Exemple : ecritureécriture d'un fichier texte'''
 
<source lang="cpp" line>
Pour lire dans le fichier on utilise la méthode read((char *)buffer , int nb) pour lire nb octets de ce fichier.
 
*'''EcritureÉcriture d'un fichier binaire'''
 
<source lang="cpp" line>