[C++] Ecriture de données dans un fichiers

Fermé
Aurélien - 23 juin 2003 à 14:37
soussitou Messages postés 3 Date d'inscription dimanche 20 septembre 2009 Statut Membre Dernière intervention 20 septembre 2009 - 20 sept. 2009 à 11:21
Salut !
Voilà, je suis grand novice en programmation ; j'aimerai écrire dans un fichier, au formait binaire (on m'a dit que ca prenait moins de place) ddes données que j'ai en fait mises en forme avec un tableau de tableaux de int. La question est simple, comment de fais ?
Et quand je vais récupérer les données, ca va bien se passer ?
Une autre idée que j'ai eut, c de créer une structure, qui aura 7 paramètres (ca g 7 sous-tableaux) : quel est l'avantage ?
Merci pour vos réponses
Aurélien
A voir également:

20 réponses

benita092000
26 oct. 2004 à 17:26
salut
3
Bonjours tout le monde j'ai une question si vous pourriez m'aider SVP
je veux enregistrer le contenu d'un fichier (qui représente 200 valeur l'une en dessous de l'autre c-a-d 200 ligne ) dans un tableau donc chaque valeur dans une case de tableau... et merci d'avance.
2
Soit en gros pour reprendre : comment écrire autre chose que du texte dans un fichier ? Merci ......
0
batmat Messages postés 1871 Date d'inscription jeudi 1 novembre 2001 Statut Membre Dernière intervention 9 janvier 2008 114
23 juin 2003 à 15:13
En fait, écrire au format "binaire" ou au format "texte" ne signifie rien.
D'ailleurs sous Linux par exemple, l'ouverture "rt" n'a aucun effet : tout est ouvert en binaire.

Mais tu ne gagnes pas vraiment de place directement e de façon magique : que tu écrives un octet en mode binaire ou un octet en mode texte, tu auras toujours écrit un octet :-)

@++
Poster, poster encore et toujours :-)
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
batmat Messages postés 1871 Date d'inscription jeudi 1 novembre 2001 Statut Membre Dernière intervention 9 janvier 2008 114
23 juin 2003 à 15:16
http://f2gi.free.fr/files/cours/IOstream.html
J'ai trouvé ça, ça résume ce qu'on peut faire.

Pour clarifier ce que je disais : si ton programme écrit déjà dans un fichier et que tu veux juste passer en mode binaire sans rien changer d'autre, eh bien tu ne gagneras pas de place...

@++
Poster, poster encore et toujours :-)
0
Ok merci batmat,
si par contre mes données etaient des structures par ex, comment les stocker alors ? (le truc, c que je n'ai que des notions de c, et je sais que iostream.h ... ca convient plus pour du c++, c pas top.
fread et fwrite sont des fonctions appropriées pour ca ?
Merci
Auré
0
Don_Corleone Messages postés 19 Date d'inscription mercredi 18 juin 2003 Statut Membre Dernière intervention 26 décembre 2003
23 juin 2003 à 15:17
slt ,

Tu n est pas obliger d erire tes fichiers en binaire car le gain de place n est pas vraiment important a ton nivo .
Dans ce cas je te conseil les fonction f_open ,f_write et f_read . Elles sont tres simple d utilisation . Regarde dans l aide de ton outil de developement il devrai y etre explique comment on les utilise . Si t as un pb pour comprendre l aide dis moi le et je t expliquerai .

Bonne chance

"A prendre la vie trop au serieux , on en sort pas en vie ".
0
Bon, je suis vraiment une quiche en c++ .... pointeurs et tout ca, faut que j'apprenne. J'ai 2 erreurs à la ligne fwrite ...

struct Decimation

{
int FacteurDecimation;
int Offset;
};



void main (void) {


struct Decimation d1;
d1.FacteurDecimation=1;
d1.Offset=13;


FILE* sortie = NULL; /* périphérique de sortie */
sortie = fopen("ftext.txt", "wt");

fwrite(*d1,sizeof(struct Decimation),1,sortie);
}
0
batmat Messages postés 1871 Date d'inscription jeudi 1 novembre 2001 Statut Membre Dernière intervention 9 janvier 2008 114
23 juin 2003 à 15:42
n'écris pas *dl mais &dl
@++
Poster, poster encore et toujours :-)
0
batmat Messages postés 1871 Date d'inscription jeudi 1 novembre 2001 Statut Membre Dernière intervention 9 janvier 2008 114
23 juin 2003 à 15:44
et remplace :
sortie = fopen("ftext.txt", "wt");


par :
if ( (sortie = fopen("ftext.txt", "wt")) == NULL)

{
cerr<<"Erreur d'ouverture du fichier"<<endl;
return 1;
}


@++
Poster, poster encore et toujours :-)
0
ok merci ... suis vraiment nul ...
i'll be back for other questions
Auré
0
batmat Messages postés 1871 Date d'inscription jeudi 1 novembre 2001 Statut Membre Dernière intervention 9 janvier 2008 114
23 juin 2003 à 15:48
Arrete de dire que t null :-)
Tout le monde a commencé un jour ;p L'important c de bosser et d'y croire. Un bon truc pour comprendre c de tenter d'aider les autres. (Mais fo qd meme attendre un ptit peu pour pas risquer d'induire trop en erreur :-D)



@++
Poster, poster encore et toujours :-)
0
batmat Messages postés 1871 Date d'inscription jeudi 1 novembre 2001 Statut Membre Dernière intervention 9 janvier 2008 114
23 juin 2003 à 15:46
Ah oui, aussi : fwrite te renvoie le nombre d'éléments écrits : tu dois donc vérifier que son retour est égal à 1 dans ton cas...

@++
Poster, poster encore et toujours :-)
0
Ok merci pour ton aide & encouragements batmat ! c cool
A+
0
salut
pour repondre
ecrires en binaire ou en texte cvrai, cela , ne signifie rien du tout
ce n'est pas en terme de poids masse texte et binaire qu'il fo penser, mais en terme de portabilité efficiente.
les flux binaires gèrent directement les suites octales composées de bits. Donc, independemant des os et du matos
les flux textes, eux, sont formatées, donc, portables et réutilisables
par contre, les flux binaires sont beaucoup plus puissants que les flux texte.
on parle alors de courant binaire dans les flux

voilà
accès binaire en ansi_c> fread et fwrite> renvoyant respectivement le nb d'enregistrements specifiés en 3 eme argument des fonctions citées lus et ecrits.
accès texte>fonctions fgets, fputs, fgetc, fputc( caracteres/caracteres, ligne / ligne)
j'en ai ommis un volontairement......

cependant, l'astuce conciste a lire en binaire et a transferer pour des raisons de portabilités en texte...
bonne chance
abdel
0
Bonjour!
S'il vous plait,
comment fait t'on en C++ pour ecrire dans un fichier a partir d'un certain point, en ecrasant seulement les donnees a partir de ce point, sans perdre ce qui precede dans le fichier?
merci beaucoup!
0
pi€rre Messages postés 76 Date d'inscription mercredi 9 juin 2004 Statut Membre Dernière intervention 13 octobre 2005
17 juin 2004 à 17:23
FILE * fic=fopen(chemin_fic,"a");
ouvre en ecriture et positionne fic à la fin du fichier
0
bonjour,

Je voudrais bien un programme qui stocke un tableau des structures dans un fichier puis recupère ce tableau.

Merci beaucoup
0
soussitou Messages postés 3 Date d'inscription dimanche 20 septembre 2009 Statut Membre Dernière intervention 20 septembre 2009
20 sept. 2009 à 11:21
hassane svp jai besoin de votre aide svpppp faite vvvite je doit deposer ce jeudi mon memoire.jai déçidé a la derniere minute de programmer avec language C alors je metrise pas svppp jai vu votre annonce(sais tu faire un programme d'une matrice stocké ds un fichier puis réouvrir le fichier pour lire le contenu)
chaque ligne doit etre parcouru tout les 4milli seconde
si tu a qoi qe se soit envoi moi le svpppppp 0552127406
0
Bonjours tout le monde j'ai un petit soucis si vous pourriez m'aider SVP
j'ai un programmes en c++ qui traite un objet de 200 ligne alors quand je transforme cet objet en string pour pouvoire l'enregistrer en format txt j'obtient sur mon texte que la dérnière ligne (numéro 200) ....sachant que j'utilise la commande ofstream pour écrire sur le fichier texte ....si qlq à une idée et merci d'avance.
0
Salut,
Peut être que tu trouvera ta réponse dans le cours sur les fichiers sur ce site : http://tibo.lelore.free.fr/IRIS/1Annee/cpp/...
0
merci beaucoup Tibo pour ta réponse je vais voir le lien......a+.
0
soussitou Messages postés 3 Date d'inscription dimanche 20 septembre 2009 Statut Membre Dernière intervention 20 septembre 2009
20 sept. 2009 à 10:58
SVPPPPP DE LAAIIIIIIIDE avans le 24septembre(((ce jeudi dernier délai de dépo de memoire d'électronique )))
je vais déposer ce mercredi mon memoire pour soutenir la semaine prochaine.je programme en VHDL mais seulement c'est trés difficil alors jai trouvé une solution.je peut programmer avec C seulement je métrise pas jai trouvé cette idée hier sur le net(le passage Cvers VHDL existe) svp qquelqun peut mecrir le code c pour stocker une matrice (N*M ) dans un fichier puis réouvrir le fichier pour lire le contenu seulement il faut parcourir chaque ligne a 4 mili seconde???? contacter moi a neonessed@hot.fr((0552127406))
0