Création et lecture de fichier en C++.

Résolu
deguelatore Messages postés 40 Date d'inscription samedi 24 juillet 2004 Statut Membre Dernière intervention 24 octobre 2005 - 2 août 2005 à 13:44
magic_Nono Messages postés 1878 Date d'inscription jeudi 16 octobre 2003 Statut Membre Dernière intervention 16 mars 2011 - 3 août 2005 à 15:01
Bonjour à tous. Alors voila mon problème: Je n'arrive pas à créer un fichier comme je le souhaite. Le fichier est créer mais il est vide.

42 réponses

xterminhate Messages postés 371 Date d'inscription dimanche 4 janvier 2004 Statut Membre Dernière intervention 23 septembre 2009
2 août 2005 à 23:01
Ne tend pas de perche à Joky... il serait capable de relancer sur l'histoire de tampon.

Bon rapidement, les yeux fermés...

int main()
{
string entree;
string tampon;
ofstream fichier("joky.txt");
cout << "Quelques instructions:\nPour QUITTER, tapez\t\t#exit\nPour SAUVEGARDER, tapez\t\t#save" <<endl;
do
{
cin>>entre;
if (entere == "#save")
{
fichier<<tampon;
tampon.clear();
cout <<"Sauvegarde terminer"<<endl;
}
else if( entree != "#exit" )
tampon+=entree;
}
while ( entre != "#exit");
}
3
magic_Nono Messages postés 1878 Date d'inscription jeudi 16 octobre 2003 Statut Membre Dernière intervention 16 mars 2011
2 août 2005 à 13:53
Que veux tu?

___________________________________________________________
Magicalement
Nono
0
deguelatore Messages postés 40 Date d'inscription samedi 24 juillet 2004 Statut Membre Dernière intervention 24 octobre 2005
2 août 2005 à 13:54
Je veux savoir commet lire et écrire un fichier en c++.
0
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
2 août 2005 à 13:54
Me semble logique, un fichier à sa création est toujours vide.

ciao...
BruNews, MVP VC++
0

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

Posez votre question
deguelatore Messages postés 40 Date d'inscription samedi 24 juillet 2004 Statut Membre Dernière intervention 24 octobre 2005
2 août 2005 à 14:03
Oui mais je veux aussi le remplir. Voici un morceau de mon prog.

#include
#include <string>
#include <fstream>

using namespace std;

int main()
{
int entre; //Variable qui stocke les données entré par l'utilisateur.

do
{
cin>>entre;

if (strcmp (entre, "save")) //Si l'utilisateur tape "save", il y a création d'un fichier.
{
ofstream fin ("sauvegarde.txt"); //Sauvegarde.
}

while (strcmp ( entre,"exit");

etc............

Mais je ne sais pas comment entrer les données de l'utilisateur dans le fichier.
De même, je ne sais pas lire un fichier.
Alors, comment on fait???
0
cs_Joky Messages postés 1787 Date d'inscription lundi 22 novembre 2004 Statut Membre Dernière intervention 31 janvier 2009 2
2 août 2005 à 14:37
Ah mé int entre = "save" t'as le temps d'attendre lol

char *szEntry;

scanf("%s", &szEntry);



if(strcmp(szEntry, "save") == 0)

{

//chaine identique...

}



Un bon début non ? :)

void Aurevoir( void ); //Bonne journée
0
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
2 août 2005 à 14:46
char *szEntry;

si tu fais un scanf sur un pointeur qui ne pointe nulle part....

Allez Joky on se réveille.

ciao...
BruNews, MVP VC++
0
cs_Joky Messages postés 1787 Date d'inscription lundi 22 novembre 2004 Statut Membre Dernière intervention 31 janvier 2009 2
2 août 2005 à 14:49
Ah la la j'ai autant l'air con que lui maintenant lol

char szEntry[256+1];



désolé
void Aurevoir( void ); //Bonne journée
0
xterminhate Messages postés 371 Date d'inscription dimanche 4 janvier 2004 Statut Membre Dernière intervention 23 septembre 2009
2 août 2005 à 15:51
On ne compare par un int à une chaine....

Pour écrire dans ton fichier, tu dois utiliser l'opérateur <<. Par exemple :

int entre = 0;
cin >> entre;
ofstream fin ("sauvegarde.txt"); //Sauvegarde.
fin << "bonjour" << "\n" << "la saisie est égalle à : " << entre << endl;
0
deguelatore Messages postés 40 Date d'inscription samedi 24 juillet 2004 Statut Membre Dernière intervention 24 octobre 2005
2 août 2005 à 16:53
Bon voila sa marche mais quand j'enregistre, mon programme n'enregistre que le dernier mot de mon texte.
Comment faire pour tout sauvegarder?
0
magic_Nono Messages postés 1878 Date d'inscription jeudi 16 octobre 2003 Statut Membre Dernière intervention 16 mars 2011
2 août 2005 à 16:53
y a jamais rien d'obligé en prog,

il n'est pas obligé de passer par les flux,

et peux passer par les fonctions standard

ex:



int rep=fprintf(m_fichier,"%s",(const char*)txt);

if(rep < 0)

//Signaler erreur

...;






nota: si on perd à utiliser ces fonctions, merci de m'expliquer quoi et pourquoi...


___________________________________________________________
Magicalement
Nono
0
xterminhate Messages postés 371 Date d'inscription dimanche 4 janvier 2004 Statut Membre Dernière intervention 23 septembre 2009
2 août 2005 à 21:19
312076 deguelatore : Donne ton code.

=180080 magic_Nono : La demande portait sur une ouverture/ecriture en C++ et tu proposes un exemple en C.....

Cordialement,
Xterminhate.
0
deguelatore Messages postés 40 Date d'inscription samedi 24 juillet 2004 Statut Membre Dernière intervention 24 octobre 2005
2 août 2005 à 21:39
Voici mon code:

include
#include <fstream>
#include <string>
using namespace std;


//On débute avec la fonction principal. C'est à dire 'main'.
int main()
{
char entre[500]; //Variable dans laquelle sont stockées les données entré par l'utilisateur.

cout << "Quelques instructions:"<<endl; //Mode d'emploi.
cout <<" Pour QUITTER, tapez #exit" <<endl;
cout <<" Pour SAUVEGARDER, tapez #save" <<endl;

do //Début de la boucle DO...WHILE.
{
cin>>entre; //L'utilisateur entre les données.


if (strcmp (entre,"#save")= = 0)
{
ofstream fin ("sauvegarde.txt"); //Création du fichier "sauvegarde.txt".
fin << "# DEBUT DE LA SAUVEGARDE #"<<endl; //En tête de la sauvegarde.
fin <<""<<endl;
fin << entre <<endl; //Enregistrement des données.
fin <<""<<endl;
fin << "# FIN DE LA SAUVEGARDE #"<<endl;
cout <<"Sauvegarde terminer"<<endl;

}

}
while (strcmp (entre,"#exit")); //Tant que l'utilisateur ne tape pas 'exit' le
//programme continue de tourner.


return 0; //Arrêt du programme quand l'utilisateur tape 'exit'
}
0
cs_Joky Messages postés 1787 Date d'inscription lundi 22 novembre 2004 Statut Membre Dernière intervention 31 janvier 2009 2
2 août 2005 à 21:42
Ne l'ouvre pas à chaque fois, laisse le ouvert une fois pour toute

ou bien ferme le à chaque foi :)

void Aurevoir( void ); //Bonne journée
0
deguelatore Messages postés 40 Date d'inscription samedi 24 juillet 2004 Statut Membre Dernière intervention 24 octobre 2005
2 août 2005 à 21:45
Alors, si je veux fermer le fichier je dois taper:

fin.close( )


Mais comment veux tu que je le laisse ouvert une fois pour toute?
0
xterminhate Messages postés 371 Date d'inscription dimanche 4 janvier 2004 Statut Membre Dernière intervention 23 septembre 2009
2 août 2005 à 21:52
La fermeture est automatique à la fin du bloc dans lequel le flux a été ouvert. L'utilisation de fsteram:close() est souvent inutile.

L'idéal est de créer ton flux au debut du main(). Il se fermera automatiquement à la fin du main().

Cordialement,
Xterminhate.
0
deguelatore Messages postés 40 Date d'inscription samedi 24 juillet 2004 Statut Membre Dernière intervention 24 octobre 2005
2 août 2005 à 21:55
Ok merci. Bon, mais comment faire pour enregistrer toutes les phrases que j'écris dans le fichier. Par ce que le problème est que j'enregistre que le dernier mot.
0
xterminhate Messages postés 371 Date d'inscription dimanche 4 janvier 2004 Statut Membre Dernière intervention 23 septembre 2009
2 août 2005 à 21:56
En laissant ouvert ton fichier !!!

Cordialement,
Xterminhate.
0
xterminhate Messages postés 371 Date d'inscription dimanche 4 janvier 2004 Statut Membre Dernière intervention 23 septembre 2009
2 août 2005 à 21:57
A chaque itération tu créées un nouveau fichier... rien de surprenant que ce soit seulement la dernière itération qui est sauvegardée.

Cordialement,
Xterminhate.
0
deguelatore Messages postés 40 Date d'inscription samedi 24 juillet 2004 Statut Membre Dernière intervention 24 octobre 2005
2 août 2005 à 21:58
Oui, mais on fait comment pour laisser le fichier ouvert?
0
Rejoignez-nous