Enregistrement d'un tableau dans un fichier
Fermé
hghada
Messages postés
2
Date d'inscription
vendredi 24 avril 2015
Statut
Membre
Dernière intervention
24 avril 2015
-
Modifié par Whismeril le 25/04/2015 à 08:47
mamiemando Messages postés 33433 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 17 décembre 2024 - 8 mai 2015 à 00:47
mamiemando Messages postés 33433 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 17 décembre 2024 - 8 mai 2015 à 00:47
A voir également:
- Enregistrement d'un tableau dans un fichier
- Comment ouvrir un fichier epub ? - Guide
- Comment réduire la taille d'un fichier - Guide
- Tableau croisé dynamique - Guide
- Fichier rar - Guide
- Ouvrir un fichier .bin - Guide
1 réponse
mamiemando
Messages postés
33433
Date d'inscription
jeudi 12 mai 2005
Statut
Modérateur
Dernière intervention
17 décembre 2024
7 809
Modifié par mamiemando le 8/05/2015 à 00:47
Modifié par mamiemando le 8/05/2015 à 00:47
Bon nous allons passer sur le code en lui-même qui contient beaucoup de choses qui ne vont pas du tout et nous centrer sur le problème en lui même, écrire une chaîne dans un fichier.
1) Comment écrire dans un fichier
L'exemple ci-dessous montre comment écrire un fichier proprement :
2) Pièges classiques dûs aux types
La seconde "difficulté" potentielle dans ton code, c'est va-t'on écrire ce qu'on veut ? Si ce sont les caractères associés à tes couleur que tu veux écrire, pas de problème.
Maintenant supposons que tu veuilles écrire les nombres correspondants à chaque couleur et que tu aies eu envie de les stocker dans des uint8_t. Pas de chance, en C++ un uint8_t est vu comme un char, et on n'affichera donc le caractère ASCII correspondant au lieu de la valeur numérique. Pour éviter ça, il faudrait donc caster l'uin8_t qu'on souhaite écrire (par exemple en uint16_t).
Exemple :
... retourne :
Bonne chance
1) Comment écrire dans un fichier
L'exemple ci-dessous montre comment écrire un fichier proprement :
#include <iostream> #include <fstream> int main() { const char * filename = "toto.txt"; std::ofstream ofs(filename); if (ofs) { ofs << "bonjour" << std::endl; ofs.close(); } else { std::cerr << "Can't write in " << filename << std::endl; } return 0; }
ofsest ici un flux qui permet d'écrire dans un fichier comme si on écrivait dans
std::cout, le flux de sortie standard. Il faut simplement contrôler qu'il est ouvert avec succès avant d'écrire dedans. Il faut veiller à le fermer (si et seulement si il a été ouvert avec succès) une fois qu'on a fini d'écrire dedans.
2) Pièges classiques dûs aux types
La seconde "difficulté" potentielle dans ton code, c'est va-t'on écrire ce qu'on veut ? Si ce sont les caractères associés à tes couleur que tu veux écrire, pas de problème.
Maintenant supposons que tu veuilles écrire les nombres correspondants à chaque couleur et que tu aies eu envie de les stocker dans des uint8_t. Pas de chance, en C++ un uint8_t est vu comme un char, et on n'affichera donc le caractère ASCII correspondant au lieu de la valeur numérique. Pour éviter ça, il faudrait donc caster l'uin8_t qu'on souhaite écrire (par exemple en uint16_t).
Exemple :
#include <iostream> #include <cstdint> int main() { uint8_t x = 117; std::cout << "x = " << x << std::endl << "uint16_t(x) = " << uint16_t(x) << std::endl; return 0; }
... retourne :
x = u
uint16_t(x) = 117
Bonne chance