Accueil > Forum > > > > Problème d'affichage a la lecture d'un fichier avec fonction fstream et stockage dans une chaine
Problème d'affichage a la lecture d'un fichier avec fonction fstream et stockage dans une chaine
dimanche 2 mai 2010 à 20:58:00 |
Problème d'affichage a la lecture d'un fichier avec fonction fstream et stockage dans une chaine

curite
|
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 C/C++ :
#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 C/C++ :
#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
}
}
Mon problème:
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:
-----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 il est sensé s'afficher le 4ième compte enregistrer
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
|
|
lundi 3 mai 2010 à 10:23:33 |
Re : Problème d'affichage a la lecture d'un fichier avec fonction fstream et stockage dans une chaine

buno
|
Hello,
Dans la fonction AfficherCompteTout(), tu lis 4 lignes mais tu n'en affiches que 3. En effet, la ligne que tu lis dans l'instruction while est perdue...
Entre nous, si ton paramètre ne sert à rien, tu peux le supprimer dans le prototype et dans l'appel de la fonction, non?
@+
Buno
----------------------------------------
L'urgent est fait, l'impossible est en cours. Pour les miracles, prévoir un délai...
|
|
lundi 3 mai 2010 à 13:22:05 |
Re : Problème d'affichage a la lecture d'un fichier avec fonction fstream et stockage dans une chaine

curite
|
C'est vrai je n'y avait pas pensé, merci. Mais je voulait savoir: dans l'arguent de while, ca compte vraiment pour une ligne lue, et sa change de ligne comme un "getline"? Si c'est sa, a mon avis il faudrait que je créer un fichier comprenant le nombre de mots de passe et dans la boucle je met une variable avec incremantation jusqu'à que sa affiche tout les compte. Corrigez moi si je me trompe.
|
|
lundi 3 mai 2010 à 14:17:20 |
Re : Problème d'affichage a la lecture d'un fichier avec fonction fstream et stockage dans une chaine

buno
|
Ah bah vi! Ce n'est pas parce que c'est un argument à la condition while que ton getline ne lira pas une ligne
Inutile d'avoir un autre fichier pour avoir ta condition de fin.
Je te propose la façon suivante:
- dans ton fichier, tu crée une seule ligne par compte, une ligne comprenant donc un compte, un login, un mot de passe
- dans ton code, tu code un truc comme ceci:
Code C# :
while (getline(fichier,ligne)
{
// récupération des différents champs
// affichage
}
@+
Buno
----------------------------------------
L'urgent est fait, l'impossible est en cours. Pour les miracles, prévoir un délai...
|
|
lundi 3 mai 2010 à 16:54:16 |
Re : Problème d'affichage a la lecture d'un fichier avec fonction fstream et stockage dans une chaine

curite
|
Ce n'est pas une mauvaise idée, mais c'est plus difficile que de stocker le nombre de compte dans un autre fichier. Merci pour l'idée je vais surement faire sa.
|
|
lundi 3 mai 2010 à 17:15:52 |
Re : Problème d'affichage a la lecture d'un fichier avec fonction fstream et stockage dans une chaine

buno
|
mais c'est plus difficile que de stocker le nombre de compte dans un autre fichier
Non, je ne pense pas. Ce sera, de plus, plus facile à maintenir plutôt que 2 fichiers séparés.
@+
Buno
----------------------------------------
L'urgent est fait, l'impossible est en cours. Pour les miracles, prévoir un délai...
|
|
mardi 4 mai 2010 à 07:49:44 |
Re : Problème d'affichage a la lecture d'un fichier avec fonction fstream et stockage dans une chaine

curite
|
Je vais essayer les deux et je verrai quelle méthode est la plus rapide. En tout cas, merci pour cette très rapide.
|
|
Cette discussion est classée dans : fichier, int, string, login, compte
Répondre à ce message
Sujets en rapport avec ce message
besoin d'aide plzzz [ par Avalon10101 ]
_-=AvAloN=-_Voici mon code : (en gros)#include class Compte{string login;string pass;public:Compte();void chercher();Compte ListdesComptes[100];}....v
Probleme ASCII et coonversion string vers char (enfin je pense) [ par Leptis ]
Salut a tous les pgm qu'il y a sur ce site. Avant tout je tien à vous prévenir que je suis en gros newbie en C.Voila mon problème : je cherche à faire
fichier [ par infodaoudi ]
je veux afficher la classes suivante dans un fichier binaire: class Noeud { public: int nbEntree; PageRegion *fils[C+1]; } avec: class PageRegion
ouvrire polusieurs fichiers [ par Stiko ]
bonjour; je veux ouvrire plusieurs fichiers "toto1.txt","toto2.txt".."toto10.txt"pourcela j ai fait un tableau de string tab1[];et j ai essayé de met
Lire des chiffres avec les virgules [ par Stiko ]
salut, j'ai fait un petit programme pour ouvrire un fichier texte qui contient seument des chifres séparées par des points virgules.ce programme lit l
Conversion String en Float [ par mriviere ]
Bonjour je cherche a convertir un char en float, je sais que la fonction atoi le fait mais elle ne prend pas en compte la virgule.En fait dans mon str
deplacer fichier [ par kirby94460 ]
voila mon problemelorsque je tape ce code :#include int main(int argc, char *argv[]){ MoveFile("C:\\Documents and Settings\\Vincent\\Bureau\\prog\\94.
probleme dans une ecriture de fichier [ par hisoka56 ]
bon salut a tous, j'ai un petit probleme d'ecriture dans un fichier dans uen fonction qui permet de sauvegarder un niveau voila le fichier de niveaux
Templace c++ ==> URGENT svp [ par najla1986 ]
bonjour, j'ai un dossier a rendre pour mes cours et j'ai un soucis concernant l'utilisation de mes template. c'est donc a l'appel des methode du templ
Erreur conversion from `Sportif*' to non-scalar type `Sportif' requested [ par lordskyser1 ]
Bonjour,je débute en C++ et je tente de compiler ma première classe sans y arriver, car je n'arrive pas à comprendre le message d'erreur de dev c++.he
Livres en rapport
|
Derniers Blogs
POUR RAPPEL ! LES SPéCIFICATIONS DES PROTOCOLES OFFICE ET SHAREPOINT SONT DISPONIBLES SUR MSDNPOUR RAPPEL ! LES SPéCIFICATIONS DES PROTOCOLES OFFICE ET SHAREPOINT SONT DISPONIBLES SUR MSDN par neodante
Quelle est le point commun entre : Microsoft il y a 10 ans et Apple aujourd'hui ? Réponse: avoir une politique de protocoles propriétaires et fermés :) Car pour rappel (si si je vous assure c'est important de le rappeler), la majorité des spécifications e...
Cliquez pour lire la suite de l'article par neodante JOYEUX ANNIVERSAIRE NIXJOYEUX ANNIVERSAIRE NIX par ebartsoft
Souhaitons un bon et joyeux anniversaire à notre hôte à tous, Nix.
Je ne le répéterais jamais assez mais sans lui rien ne serait possible. Il défit en permanence les lois de la gravité et comme il le dit si bien, si tu lui fais confiance ça devra...
Cliquez pour lire la suite de l'article par ebartsoft IMAGINE CUP 2012, MAKE A SIGN EN FINALEIMAGINE CUP 2012, MAKE A SIGN EN FINALE par junarnoalg
Voilà qui est fait, la nouvelle est officielle ! L'équipe belge "Make a Sign" va au pays des kangourous défendre son projet dans la catégorie Software Design. http://www.imaginecup.com/CompetitionsContent/Competition/WorldwideFinalists.aspx V...
Cliquez pour lire la suite de l'article par junarnoalg KINECT 1.5 IS OUT !KINECT 1.5 IS OUT ! par Vko
La version 1.5 du Kinect For Microsoft vient tout juste de sortir ! Plein de nouveautés: Tracking de squelette en Near Mode Détection en position assise Détection faciale avec un SDK dédié Documentation et des guideline (enfin) Un out...
Cliquez pour lire la suite de l'article par Vko LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) par richardc
Mise à jour des Web API du 14 Mai
Réservez dès maintenant votre journée du 20 juin pour le Windows Azure Dev Camp 2012 à Paris
Mise à jour de Team Foundation Service
MechCommander 2 sur Windows 8
Entity Framework 5 Release Candidate e...
Cliquez pour lire la suite de l'article par richardc
Forum
MATLAB PROGRAMME MATLAB PROGRAMME par wahab1087
Cliquez pour lire la suite par wahab1087 RGB2GRAYRGB2GRAY par musa18
Cliquez pour lire la suite par musa18
Logiciels
sDEVIS-FACTURES vlPRO (8.1.0.3)SDEVIS-FACTURES VLPRO (8.1.0.3)sDEVIS-FACTURES vlPRO a été mis au point pour les particuliers, créateurs, entrepreneurs, artisa... Cliquez pour télécharger sDEVIS-FACTURES vlPRO 974 Application Server (12.2.4.6)974 APPLICATION SERVER (12.2.4.6)Développez de puissantes applications dans un environnement de 'cloud computing', clusterisé, séc... Cliquez pour télécharger 974 Application Server vPicture (1.4.2.1)VPICTURE (1.4.2.1)Avec vPicture, hébergez vos images facilement et rapidement.
vPicture est un utilitaire simple, ... Cliquez pour télécharger vPicture Easy-Planning (2.2.1.6)EASY-PLANNING (2.2.1.6)Easy-Planning permet de créer des plannings sous la représentation de diagrammes et est adapté au... Cliquez pour télécharger Easy-Planning COM-BACKUP (2.0)COM-BACKUP (2.0)
COM-BACKUP est un logiciel de sauvegarde qui permet de planifier les sauvegardes de vos dossiers ...
Cliquez pour télécharger COM-BACKUP
|