Problème d'affichage a la lecture d'un fichier avec fonction fstream et stockage dans une chaine
Bonjours, j'ai créer un gestionnaire de mot de passe en c++ je vous montre le code sinon vous allez rien comprendre :p
main.cpp
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70
|
#include <iostream>
#include <string>
using namespace std;
string ajoutCompte(const string& compte,const string& login,const string& mdp);//les prototypes
int afficherCompte1(int numeroCompte);
int afficherCompteTout(int lala);
int main()
{
int medp=NULL;
int choixMenu;
int choixCompte;
int variablePourParametre;
string compte;
string login;
string mdp;
do
{
cout<<"Que voulez-vous faire?: "<<endl<<endl<<"1-Voir les mots de passe"<<endl;//on affiche les choix
cout<<"2-Ajouter un compte"<<endl<<"3-Supprimer TOUT les mots de passe";
cout<<endl<<"4-Quitter"<<endl;
cin>>choixMenu;
switch (choixMenu)//le traditionnel switch
{
case 1:
cout<<"-----MOTS DE PASSE ENREGISTRES-----";
cout<<endl<<endl<<"Voici la liste des mots de passes enregistres: "<<endl<<endl;
afficherCompteTout(variablePourParametre);//vous remarquerez , variablePourParametre ne sert a rien, mais sans sa, code block me renvoi une erreur
cout<<endl<<endl<<"Quel mot de passe voulez vous afficher?(un nombre trop grand affichera\nle dernier): ";
cin>>choixCompte;
afficherCompte1(choixFonction);//pour afficher le compte choisi
break;
case 2:
cout<<"-----AJOUT D'UN MOT DE PASSE-----"<<endl<<endl;
cout<<"Donnez un nom au compte pour le reconnaitre: "<<endl;
cin>>compte;
cout<<"Entrez le login: "<<endl;
cin>>login;
cout<<"Entrez le mot de passe: "<<endl;
cin>>mdp;
ajoutCompte(compte,login,mdp);//pour ajouter un compte
break;
case 3:
remove("dnnsmps.gmtp");//pour supprimer le fichier donc les mdp
break;
case 4:
return 0;//pour fermer la console
break;
default:
cout<<"Valeur rentree non correspondante";//si la personne a entrée un mauvais numéro
}
cout<<"Que voulez vous faire?"<<endl<<endl<<"1-Retourner au menu"<<endl<<"2-Quitter";//pour pouvoir retourner au menu
cin >> choixMenu;
}while(choixMenu != 2);//si il veut quitter, la fonction se termine par un return et la console de ferme
return 0;
} |
fonction.cpp
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83
|
#include <iostream>
#include <string>
#include <fstream>
#include <windows.h>
using namespace std;
void ajoutCompte(const string& compte,const string& login,const string& mdp)//pour ajouter un compte
{
fstream fichier("dnnsmps.gmtp", ios::out|ios::app);//je met souvent fstream car je trouve sa plus simple
if(fichier)
{
fichier << compte << std::endl;//pour ecrire dans le fichier
fichier << login << std::endl;
fichier << mdp << std::endl;
fichier.close();
}
else//sinon erreur
{
cerr << "Impossible d'ouvrir le fichier !" << endl;
}
}
void afficherCompte1(int numeroCompte)//pour afficher un compte
{
fstream fichier("dnnsmps.gmtp", ios::in); // on ouvre le fichier en lecture
if(fichier) // si l'ouverture a réussi
{
int i= NULL;
string compte;
string login;
string mdp;
do
{
getline(fichier, compte);//récupération du compte
getline(fichier, login);
getline(fichier, mdp);
i++;//incrémantation pour compter
}while(i != numeroCompte);//tant que le numero du compte voulu est différent de celui ou on est
cout<<compte<<":"<<endl<<"Login: "<< login <<endl<<"Mot de passe: "<< mdp << endl;
fichier.close(); // on ferme le fichier
}
else // sinon
{
cerr << "Impossible d'ouvrir le fichier !" << endl;
}
}
void afficherCompteTout(int trucQuiSertARien)//le paramètre ne sert a rien (je n'arrive pas a faire sans)
fstream fichier("dnnsmps.gmtp", ios::in); // on ouvre le fichier en lecture
if(fichier) // si l'ouverture a réussi
{
string compte;
string login;
string mdp;
int numeroCompte=1;
do
{
getline(fichier, compte);//on récupère
getline(fichier, login);
getline(fichier, mdp);
cout << numeroCompte<<"-"<<compte<<endl;//on affiche
numeroCompte++;//incrémentation pour la numerotation
}while(getline(fichier, compte));//tant que je peut stocker une ligne dans compte
fichier.close(); // on ferme le fichier
}
else // sinon
{
cerr << "Il faut ajouter des mots de passe avant de regarder si il y en a!!" << endl;//comme le fichier existe pas, il n'y as pas de mots de passe
}
} |
<gras><souligne>Mon problème:</souligne></gras>
Quand j'ai ajouter un 4ièm,8ièm,12ièm...ect(4 par 4) mot de passe, quand je fait"voir les mot de passe" sa me met:
Le resultat de la console:
Citation:
-----Mots de passes enregistrer-----
Voici la liste des mots de passe enregistres:
1-machin
2-bidule
3-lala
4- //sa ne m'affiche pas nom de compte
Sa n'afficher pas le compte.
Bon voila, j'ai fait un exposer introductif de mon problème
Pourriez vous m'indiquer une solution :o , si vous en connaisez une o_O