Creation et ecriture dans un fichier en C++

bjipowa Messages postés 47 Date d'inscription mercredi 18 août 2004 Statut Membre Dernière intervention 29 mars 2007 - 30 mai 2005 à 14:12
Alcantornet Messages postés 89 Date d'inscription mardi 8 février 2005 Statut Membre Dernière intervention 14 novembre 2007 - 31 mai 2005 à 15:06
Bonjour,

voila je suis une noob en c++ mais je dois faire un prog pour mon BTS dans ce language, et je dois pour cela utiliser les fichiers.

J'ai donc créer un rpog pour la gestion des articles de journal ou de site internet (je c le sujet un peu bateau).

Voila mon code source pour ce prog :

<Debut code>
#include // Utilisation decout et cin
#include <stdlib.h> //
#include <string.h> //
#include <conio.h> // Utilisation getch()
#include <dos.h> // Utilisation d'une pause parametrable (durée)



////////////////////////// Definition d'un type ///////////////////////////////


typedef char chaine[50];


////////////////////////////////////////////////////////////////////////////////
//////////////////// Classe Article /////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
class article
{
protected :
chaine titre,auteur,type,mot_cles[10],nom_fichier;
int nb_pages,nb_mots_cles;
public :
article();
void saisir();
void afficher();
void visualiser();
void modifier();
char * retour_titre();
};


char * article::retour_titre()
{
return this->titre;
}


article::article()
{
strset(this->auteur, '\0');
strset(this->titre, '\0');
strset(this->type, '\0');
strset(this->auteur, '\0');
strset(this->nom_fichier, '\0');
this->nb_pages= 0;
this->nb_mots_cles=0;
for (int i=0;i<10;i++)
{
strset(this->mot_cles[i], '\0');
}
}


void article::saisir()
{
system("cls");
cin.ignore();
cout<<"\n Entrez un titre : ";
cin.getline(this->titre,50,'\n');


cout<<"\n\n Entrez un auteur : ";
cin.getline(this->auteur,50,'\n');


cout<<"\n\n Entrez un type : ";
cin.getline(this->type,50,'\n');


cout<<"\n\n Entrez un nom de fichier : ";
cin.getline(this->nom_fichier,50,'\n');


cout<<"\n\n Entrez un nombre de pages : ";
cin>>this->nb_pages;


cout<<"\n\n Entrez un nombre de mots cles: ";
cin>>this->nb_mots_cles;


for (
int i=0; // pour i allant de 0
i<this->nb_mots_cles; i++) // au nbre de mot cle entré
// faire :
{
cout<<"\n\n Entrer le mot cle numero "<< i+1 <<" : ";
cin.getline(this->mot_cles[i],50,'\n');
}
}


void article::modifier()
{
int choix;
do // boucle
{
system("cls");
cout<<"°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°\n";
cout<<"°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°\n";
cout<<"°°° °°°\n";
cout<<"°°° 1 - modifier le titre °°°\n";
cout<<"°°° 2 - modifier l'auteur °°°\n";
cout<<"°°° 3 - modifier le nombre de page °°°\n";
cout<<"°°° 4 - modifier le type °°°\n";
cout<<"°°° 5 - modifier le nom fichier °°°\n";
cout<<"°°° °°°\n";
cout<<"°°° 0 - Quitter °°°\n";
cout<<"°°° °°°\n";
cout<<"°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°\n";
cout<<"°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°\n";
cout<<" Choix : ";
cin>>choix;
switch (choix)
{
case 1 : // choix = modifier le titre
system("cls"); //efface l'écran actuel
cout<<"Entrez le nouveau titre : ";
cin.getline(this->titre,50,'\n');
break;

case 2 : // choix = modifier l'auteur
system("cls"); //efface l'écran actuel
cout<<"Entrez le nouvel auteur : ";
cin.getline(this->auteur,50,'\n');
break;

case 3 : // choix = modifier le nbre de pages
system("cls"); //efface l'écran actuel
cout<<"Entrez le nouveau nombre de pages : ";
cin>>this->nb_pages;
break;

case 4 : // choix = modifier le type
system("cls"); //efface l'écran actuel
cout<<"Entrez le nouveau type : ";
cin>>this->type;
break;

case 5 : // choix = modifier le nom du fichier
system("cls"); //efface l'écran actuel
cout<<"Entrez le nouveau nom de fichier : ";
cin.getline(this->nom_fichier,50,'\n');
break;

case 0 : // choix = Quitter
system("cls"); //efface l'écran actuel
;break;

default : // choix par defaut (si choix différent de 0,1,2,3,4,5)
system("cls"); //efface l'écran actuel
cout<<" . : : Erreur de saisi : : . ";
break;
}
} // fin de la boucle
while (choix!=0); // condition pour la fin de la boucle
}


void article::afficher()
{
system("cls");
cout<<"\n\t . : : VISUALISATION DE L'ARTICLE : : . \t\n\n";
cout<<"\n Titre de l'article : "<<this->titre;
cout<<"\n\n Auteur de l'article : "<<this->auteur;
cout<<"\n\n Type de l'article : "<<this->type;
cout<<"\n\n Nombre de pages :"<<this->nb_pages;
cout<<"\n\n Nom du fichier :"<<this->nom_fichier;
cout<<"\n\n Nombre de mots cles :"<<this->nb_mots_cles;
for(int i=0;i<this->nb_mots_cles; i++)
{
cout<<"\n\n Le mot cles "<< i+1 <<" : "<<this->mot_cles[i];
}

}


void article::visualiser()
{
chaine chemin;
chaine commande;
system("cls");
cout<<"\n\n Le nom du fichier est : ";
cout<<this->nom_fichier;
cout<<"\n\n Completer le chemin SVP : ";
cin>>chemin;
strset(commande, '\0');
strcpy(commande, "start winword");
strcat(commande, "\");
strcat(commande, this->nom_fichier);
system(commande);
}


////////////////////////////////////////////////////////////////////////////////
//////////////////// Classe Article Journal //////////////////////////////////
////////////////////////////////////////////////////////////////////////////////


class art_journal : public article
{
private :
chaine nom, periodicite, siege_social;
art_journal *suiv;
public :
art_journal();
void saisir();
void afficher();
void modifier();
void modif_suiv(art_journal*p);
art_journal * retour_suiv();
char * retour_nom();
};


art_journal::art_journal()
{
strset(this->nom,'\0');
strset(this->periodicite,'\0');
strset(this->siege_social,'\0');
this->suiv=NULL;
}


void art_journal::saisir()
{
this->article::saisir();
system("cls");
cout<<"\n\n Entrez le nom : ";
cin.getline(this->nom,50,'\n');
cout<<"\n\n Entrez la periodicite : ";
cin.getline(this->periodicite,50,'\n');
cout<<"\n\n Entrez le siege social : ";
cin.getline(this->siege_social,50,'\n');
}
void art_journal::afficher()
{
this->article::afficher();
system("cls");
cout<<"\n\n Nom de l'article : "<<this->nom;
cout<<"\n\n Periodicite : "<<this->periodicite;
cout<<"\n\n Siege social : "<<this->siege_social;
}

void art_journal::modifier()
{
int choix;
do
{
system("cls");
cout<<"°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°\n";
cout<<"°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°\n";
cout<<"°°° °°°\n";
cout<<"°°° 1 - modifier les donnees de l'article °°°\n";
cout<<"°°° 2 - modifier le nom °°°\n";
cout<<"°°° 3 - modifier la periodicite °°°\n";
cout<<"°°° 4 - modifier le siege social °°°\n";
cout<<"°°° °°°\n";
cout<<"°°° 0 - Quitter °°°\n";
cout<<"°°° °°°\n";
cout<<"°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°\n";
cout<<"°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°\n";
cout<<" Choix : ";
cin>>choix;
switch (choix)
{
case 1 : this->article::modifier();
break;

case 2 : system("cls");
cout<<"\n Entrez le nouveau nom : ";
cin.getline(this->nom,50,'\n');
break;

case 3 : system("cls");
cout<<"\n Entrez la nouvelle periodicite : ";
cin.getline(this->periodicite,50,'\n');
break;

case 4 : system("cls");
cout<<"\n Entrez le nouveau siege social : ";
cin.getline(this->siege_social,50,'\n');
break;

case 0 : system("cls");
break;

default : system("cls");
cout <<"\n . : : Erreur de saisie : : . ";

}
} while (choix!=0);
}


void art_journal::modif_suiv(art_journal*p)
{
this->suiv = p;
}


art_journal * art_journal::retour_suiv()
{
return this->suiv;
}


char * art_journal::retour_nom()
{
return this->nom;
}
////////////////////////////////////////////////////////////////////////////////
//////////////////// Classe Article Site //////////////////////////////////
////////////////////////////////////////////////////////////////////////////////


class art_site : public article
{
private :
chaine nom, type, sufixe;
art_site *suiv;
public :
art_site();
void saisir();
void afficher();
void modifier();
void modif_suiv(art_site*p);
art_site * retour_suiv();
char * retour_nom();
};


art_site::art_site()
{
strset(this->nom,'\0');
strset(this->type,'\0');
strset(this->sufixe,'\0');
this->suiv=NULL;
}


void art_site::saisir()
{
this->article::saisir();
cout<<"\n Entrez le nom : ";
cin.getline(this->nom,50,'\n');
cout<<"\n Entrez saisir le type : ";
cin.getline(this->type,50,'\n');
cout<<"\n Entrez le sufixe du site : ";
cin.getline(this->sufixe,50,'\n');
}
void art_site::afficher()
{
this->article::afficher();
cout<<"\n Nom de l'article : "<<this->nom;
cout<<"\n Type de l'article : "<<this->type;
cout<<"\n Sufixe de l'article : "<<this->sufixe;
}

void art_site::modifier()
{
int choix;
do
{
system("cls");
cout<<"°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°\n";
cout<<"°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°\n";
cout<<"°°° °°°\n";
cout<<"°°° 1 - modifier les donnees de l'article °°°\n";
cout<<"°°° 2 - modifier le nom °°°\n";
cout<<"°°° 3 - modifier le type °°°\n";
cout<<"°°° 4 - modifier le sufixe °°°\n";
cout<<"°°° °°°\n";
cout<<"°°° 0 - Quitter °°°\n";
cout<<"°°° °°°\n";
cout<<"°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°\n";
cout<<"°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°\n";
cout<<" Choix : ";
cin>>choix;
switch (choix)
{
case 1 : system("cls");
this->article::modifier();
break;

case 2 : system("cls");
cout<<"\n Entrez le nouveau nom : ";
cin.getline(this->nom,50,'\n');
break;

case 3 : system("cls");
cout<<"\n Entrez le nouveau type : ";
cin.getline(this->type,50,'\n');
break;

case 4 : system("cls");
cout<<"\n Entrez le nouveau sufixe : ";
cin.getline(this->sufixe,50,'\n');
break;

case 0 : system("cls");
break;

default : system("cls");
cout<<"\n\n . : : Erreur de saisie : : . ";
break;

}
} while (choix!=0);
}


void art_site::modif_suiv(art_site *p)
{
this->suiv = p;
}


art_site * art_site :: retour_suiv()
{
return this->suiv;
}


char * art_site::retour_nom()
{
return this->nom;
}
////////////////////////////////////////////////////////////////////////////////
//////////////////// Classe template Liste //////////////////////////////////
////////////////////////////////////////////////////////////////////////////////


template <class T>
class liste
{
private :
T *tete;
int nb_elements;
public :
liste();
void ajouter();
void afficher_tout();
void consulter();
void modifier();
void supprimer();
void lister_critere(char *);
};


template <class T>
liste<T>::liste()
{
this->tete=NULL;
this->nb_elements=0;
}


template <class T>
void liste<T>::ajouter()
{
T*p;
p=new(T);
p->saisir();
if (this->tete==NULL)
this->tete=p;
else
{
p->modif_suiv (this->tete);
this->tete=p;
}
this->nb_elements++;

}



template <class T>
void liste<T>::consulter()
{
chaine rech;
bool trouve;
T * p;
system("cls");
cout<<"\n Quel article voulez vous consulter (titre) : ";
cin.getline(rech,50,'\n');
p = this->tete;
trouve=false;
while (p && trouve==false)
{
if (strcmp(p->retour_titre(),rech)==0)
trouve=true;
else
p=p->retour_suiv();
}
if (trouve==true)
p->afficher();
else
cout<<"\n Article non trouve";

}



template <class T>
void liste<T>::afficher_tout()
{
T *p = this->tete;
system("cls");
cout<<"\n Il y a "<<this->nb_elements<<" article(s)";
while (p!=NULL)
{
p->afficher();
p=p->retour_suiv();
}
}


template <class T>
void liste<T>::modifier()
{
chaine rech;
bool trouve;
T * p;
cout<<"Quel article voulez vous modifier (titre) : ";
cin.getline(rech,50,'\n');
p = this->tete;
trouve=false;
while (p && !trouve)
{
if (strcmp(p->retour_titre(),rech)==0)
trouve=true;
else
p=p->retour_suiv();
}
if (trouve)
p->modifier();
else
cout<<"article non trouve";

}


template <class T>
void liste<T>::supprimer()
{
chaine rech;
bool trouve;
T * p, *q;
cout<<"Quel article voulez vous supprimer (titre) : ";
cin.getline(rech,50,'\n');
p = this->tete;
q = p;
trouve=false;
while (p && !trouve)
{
if (strcmp(p->retour_titre(),rech)==0)
trouve=true;
else
{
q=p;
p=p->retour_suiv();
}
}
if (!trouve)
{
cout<<"article non trouve";
}
else
{
p->afficher();
cout<<" La suppression a reussie";
this->nb_elements--;
if (p==this->tete)
{
// suppression à la tete
this->tete=this->tete->retour_suiv();
}
else if(p->retour_suiv()==NULL)
{
//suppression à la fin de la liste
q->modif_suiv(NULL);
}
else
{
// suppresion au milieu de la liste
q->modif_suiv(p->retour_suiv());
}
delete p;
}

}


template <class T>
void liste<T>::lister_critere(char * rech)
{
T * p;
p = this->tete;
int cpt = 0;
while (p)
{
if (strcmp(p->retour_nom(),rech)==0)
{
cpt++;
p->afficher();
}
p=p->retour_suiv();
}
if (cpt==0)
cout<<"aucun article";
else
cout<<cpt<<"article(s) trouve(s)s";
}
////////////////////////////////////////////////////////////////////////////////
/////////////////////////// Classe Base /////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
class Base
{
private :
liste liste_journal;
liste liste_site;
chaine nom;
public :
Base();
void initialiser();
void finaliser();
void ajouter();
void afficher();
void consulter();
void modifier();
void supprimer();
void consulter_journal();
void consulter_site();
void menu();
void moteur_recherche();
};


void Base::menu()
{

int choix;
do
{
system("cls");
cout<<"°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°\n";
cout<<"°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°\n";
cout<<"°°° °°°\n";
cout<<"°°° 1 - Ajouter °°°\n";
cout<<"°°° 2 - Afficher °°°\n";
cout<<"°°° 3 - Consulter °°°\n";
cout<<"°°° 4 - Modifier °°°\n";
cout<<"°°° 5 - Supprimer °°°\n";
cout<<"°°° 6 - Consulter journal °°°\n";
cout<<"°°° 7 - Consulter site °°°\n";
cout<<"°°° 8 - Moteur de recherche °°°\n";
cout<<"°°° °°°\n";
cout<<"°°° 0 - quitter °°°\n";
cout<<"°°° °°°\n";
cout<<"°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°\n";
cout<<"°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°\n";
cout<<" Choix : ";
cin>>choix;

switch (choix)
{
case 1 : this->ajouter();
break;

case 2 : this->afficher();
break;

case 3 : this->consulter();
break;

case 4 : this->modifier();
break;

case 5 : this->supprimer();
break;

case 6 : this->consulter_journal();
break;

case 7 : this->consulter_site();
break;

case 8 : this->moteur_recherche();
break;

case 0 : ;break;

default : cout<<" . : : Erreur de saisi : : .";
break;

}
}while (choix != 0);
}



void Base::moteur_recherche()
{
int i,nb;
chaine mot[10];
system("cls");
cout<<"\n Donner le nombre de mot (de 1 à 10) : ";
cin>>nb;
for (i=0;i<nb;i++)
{
cin>>mot[i];
}
}


void Base::initialiser()
{
char choix;
char fichier;


cout<<"\n\n Entrez le nom de la base (20 caracteres max): ";
cin.getline(this->nom,50,'\n');
cout<<"La base "<<this->nom <<" a t-elle été sauvegardée dans un fichier :(o/n) >> ";
cin>>choix;
do
{
// si le fichier a déja été sauvegardé if (choix 'O' || choix 'o')
{
cout<<"Entrer le nom (logique) du fichier : ";
cin>>fichier;

}


}
while (choix != 'n' || choix !='N' || choix != 'o' || choix != 'O');


}


void Base::finaliser()
{
FILE*fichier;
char nomF;
system("cls");
cout<<"\t°°°°°°°°°°°°°°°°°°°°°°°°°°°\n";
cout<<"\t°° °°\n";
cout<<"\t°° SAUVEGARDE DE LA BASE °°\n";
cout<<"\t°° °°\n";
cout<<"\t°°°°°°°°°°°°°°°°°°°°°°°°°°°\n";


cout<<"nom du fichier a creer: ";
cin>>nomF;


}


void Base::ajouter()
{
int choix;
do
{
system("cls");
cout<<"°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°\n";
cout<<"°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°\n";
cout<<"°°° °°°\n";
cout<<"°°° 1 - Article de journal °°°\n";
cout<<"°°° 2 - Article de site °°°\n";
cout<<"°°° °°°\n";
cout<<"°°° 0 - quitter °°°\n";
cout<<"°°° °°°\n";
cout<<"°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°\n";
cout<<"°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°\n";
cout<<" Choix : ";
cin>>choix;
switch (choix)
{
case 1 : this->liste_journal.ajouter();break;

case 2 : this->liste_site.ajouter();break;

case 0 : break;

default : system("cls");
cout<<"\n . : : Erreur de saisi : : .";
break;
}
}while (choix!=0);
}


void Base::afficher()
{
system("cls");
cout<<"\n\n\n LISTE JOURNAL : \n\n\n";
this->liste_journal.afficher_tout();
cout<<"\n\n\n LISTE SITE : \n\n\n";
this->liste_site.afficher_tout();



}


void Base::consulter()
{
int choix;
do
{
cout<<"°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°\n";
cout<<"°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°\n";
cout<<"°°° °°°\n";
cout<<"°°° 1 - Article de journal °°°\n";
cout<<"°°° 2 - Article de site °°°\n";
cout<<"°°° 0 - quitter °°°\n";
cout<<"°°° °°°\n";
cout<<"°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°\n";
cout<<"°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°\n";
cout<<" Choix : ";
cin>>choix;
switch (choix)
{
case 1 : this->liste_journal.consulter();
break;

case 2 : this->liste_site.consulter();
;break;

case 0 : break;

default : system("cls");
cout<<" . : : Erreur de saisi : : .";
break;
}
}while (choix!=0);
}


void Base::consulter_journal()
{
chaine rech;
system("cls");
cout<<"\n\n Nom du journal : " ;
cin>>rech;
this->liste_journal.lister_critere(rech);
}


void Base::consulter_site()
{
chaine rech;
system("cls");
cout<<"\n\nNom du site :";
cin>>rech;
this->liste_site.lister_critere(rech);
}



void Base::modifier()
{
int choix;
do
{
system("cls");
cout<<"°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°\n";
cout<<"°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°\n";
cout<<"°°° °°°\n";
cout<<"°°° 1 - Article de journal °°°\n";
cout<<"°°° 2 - Article de site °°°\n";
cout<<"°°° °°°\n";
cout<<"°°° 0 - quitter °°°\n";
cout<<"°°° °°°\n";
cout<<"°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°\n";
cout<<"°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°\n";
cout<<" Choix : ";
cin>>choix;
switch (choix)
{
case 1 : this->liste_journal.modifier();
break;

case 2 : this->liste_site.modifier();
;break;

case 0 : break;

default : system("cls");
cout<<" . : : Erreur de saisi : : .";
break;
}
}while (choix!=0);
}


void Base::supprimer()
{
int choix;
do
{
system("cls");
cout<<"°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°\n";
cout<<"°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°\n";
cout<<"°°° °°°\n";
cout<<"°°° 1 - Article de journal °°°\n";
cout<<"°°° 2 - Article de site °°°\n";
cout<<"°°° 0 - quitter °°°\n";
cout<<"°°° °°°\n";
cout<<"°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°\n";
cout<<"°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°\n";
cout<<" Choix : ";
cin>>choix;
switch (choix)
{
case 1 : this->liste_journal.supprimer();
break;

case 2 : this->liste_site.supprimer();
;break;

case 0 : break;

default : system("cls");
cout<<" . : : Erreur de saisi : : .";
break;
}
}while (choix!=0);
}
Base::Base()
{
//strset(this->nom,'\0');
}



////////////////////////////////////////////////////////////////////////////////
//////////////////// programme principal /////////////////////////
////////////////////////////////////////////////////////////////////////////////


void main()
{
Base mabase;
// initialisation de la base
mabase.initialiser();
// affiche le menu
mabase.menu();
mabase.finaliser();
}
<Fin code>

Dans ma procedure void Base::initialiser(), je voudrais que le prog me demande si un fichier de sauvegarde existe deja. Si non, alors il commence tout de suite a executer le prog, si Oui, il ouvre le fichier et récupère les infos contenu à l'interieur :

<Debut code>
void Base::initialiser()
{
char choix;
char fichier;


cout<<"\n\n Entrez le nom de la base (20 caracteres max): ";
cin.getline(this->nom,50,'\n');
cout<<"La base "<<this->nom <<" a t-elle été sauvegardée dans un fichier :(o/n) >> ";
cin>>choix;
do
{
// si le fichier a déja été sauvegardé if (choix 'O' || choix 'o')
{
cout<<"Entrer le nom (logique) du fichier : ";
cin>>fichier;
/* CHARGEMENT DES ELEMENTS DU FICHIERS */
}


}
while (choix != 'n' || choix !='N' || choix != 'o' || choix != 'O');


}
<Fin code>

Dans ma procedure void Base::finaliser(), j'aimerais que le programme me demande si je veux enregistrer les informations entrées dans un fichier txt.
- Si je dis Non, il ferme le prog.
- Si Oui, il me demande dans quel nom de fichier (je donne le nom de fichier sans l'extension .txt, et lui m'enregistre les infos dans le fichier <nom_fichier.txt>

<debut code>
void Base::finaliser()
{
FILE*fichier;
char nomF;
system("cls");
cout<<"\t°°°°°°°°°°°°°°°°°°°°°°°°°°°\n";
cout<<"\t°° °°\n";
cout<<"\t°° SAUVEGARDE DE LA BASE °°\n";
cout<<"\t°° °°\n";
cout<<"\t°°°°°°°°°°°°°°°°°°°°°°°°°°°\n";


cout<<"nom du fichier a creer: ";
cin>>nomF;
/* INSERTIONS DES DONNEES DANS LE FICHIER */


}
<fin code>

KKun pourrait il m'aider pour la creation et le chargement de ces fichiers SVP car g déja tenter d'aller voir des tutos ou des exemples mais je ne comprend pas et n'arrive pas a les integrer dans mon prog

3 réponses

Alcantornet Messages postés 89 Date d'inscription mardi 8 février 2005 Statut Membre Dernière intervention 14 novembre 2007
30 mai 2005 à 21:35
Salut alors voilà si tu veut enregistré dans un fichier sait un peu comme si tu veut les infos à l'écran.

Imagine une fonction pour enregistrer seulement les article. (Si j'ai bien compris ton prog )


void article::afficher()

{

FILE * p_File;

fopen("ouptut.txt","w"); // le w signife write (écrire) tu peux rajouté un b pour écrire en binaire

char * temp;

sprintf(&temp,"\n\t . : : VISUALISATION DE
L'ARTICLE : : . \t\n\n\n Titre de l'article : %s\n\n Auteur de
l'article : %s\n\n Type
de l'article :%s \n\n Nombre de pages : %s \n\n Nom du fichier :
%s\n\n Nombre de mots cles
:%i",this->titre,this->auteur,this->type,this->nb_pages,this->nom_fichier,this->nb_mots_cles);



fwrite(&temp,1,strlen(temp),p_File);



for(int i=0;i<this->nb_mots_cles; i++)

{

sprintf(&temp,"\n\n Le
mot cles %i : %s",i+1,this->mot_cles[i]);

fwrite(&temp,1,strlen(temp),p_File);

}

fclose(p_File);

}



J'ai pas testé le code mais j'espère que ça pourra te donner des idées
0
bjipowa Messages postés 47 Date d'inscription mercredi 18 août 2004 Statut Membre Dernière intervention 29 mars 2007
31 mai 2005 à 09:21
Ok, c'est exactement sa que je voulais faire, mais en fait, mon prog est en C++ et ce n'est donc pas FILE mais ofstream ou un truc comme sa il me semble. Enfin, je vais regarder sa et tenter de le modifier :)

Merci
0
Alcantornet Messages postés 89 Date d'inscription mardi 8 février 2005 Statut Membre Dernière intervention 14 novembre 2007
31 mai 2005 à 15:06
Me revoilà, je t'ai fais un simple code (compiler sous Dev-cpp 4.9.9.2 en C++) que j'ai testé. Car l'idée d'en comporte une erreur au moins ( p_File=fopen("ouptut.txt","w"); )

alors voila un petit code complet qui FONCTIONNE (rien avoir avec ton code mais c'est un exemple).

Pour exemple pour écrire un ficher :

#include <stdio.h>


int main(){
FILE * essai; // Pointeur

essai=fopen("Test.txt","w"); // ouverture du fichier

char text[]="Ca fonctionne"; // Le test

fwrite(text,1,sizeof(text),essai); // On écrit

fclose(essai); //Termine les opérations sur le fichier
}

Et un autre exemple pour le lire :

#include <stdio.h>
#include <stdlib.h>


int main(){
FILE * essai; // Pointeur

if(!(essai=fopen("Test.txt","r"))){ // ouverture du fichier
printf("Impossible d'ouvrir le fichier\n");
}else{
char text[15]; // Le test

fread(&text,1,15,essai); // On lit 15 caractères

printf("%s\n\n",text);

fclose(essai); //Termine les opérations sur le fichier
}
system("pause");
}
0
Rejoignez-nous