Gestion LOGIN - PASSWORD

Gestion LOGIN - PASSWORD - C++ - Programmation

Marsh Posté le 03-01-2010 à 18:34:26    

Bonsoir à tous,
 
J'essaye de créer un moyen pour gérer une connexion de type LOGIN // PASSWORD, avec deux types d'utilisateurs différents. Les paires (login, password) doivent se trouver dans un fichier texte. J'ai donc pensé à me servir d'un fichier texte de la forme :  
 
"test.txt"

Code :
  1. ***ADMIN***
  2. log1 // pass1
  3. log2 // pass2
  4. ***USER***
  5. user1 // pass1
  6. user2 // pass2
  7. user3 // pass3


 
Je teste le procédé via le code suivant :  
 

Code :
  1. #include <fstream>
  2. #include <string>
  3. #include <iostream>
  4. #include <limits>
  5. using namespace std;
  6. void lecture();
  7. void ecriture();
  8. int main()
  9. {
  10.     char choix;
  11.     cout<<"(L)ecture ou (E)criture : ";
  12.     cin>>choix;
  13.     if(toupper(choix)=='L')
  14.         lecture();
  15.     if(toupper(choix)=='E')
  16.         ecriture();
  17.     system("PAUSE" );
  18.     exit(0);
  19. }
  20. void lecture()
  21. {
  22.     system("cls" );
  23.    
  24.     cout<<"Voici la liste des comptes : ";
  25.     cout<<endl<<"-----------------------------"<<endl<<endl;
  26.     ifstream liste("test.txt", ios::in);
  27.     if(liste)
  28.     {
  29.             string ligne;
  30.             while(getline(liste, ligne))
  31.             {
  32.                     cout << ligne << endl; // je dois encore gérer le fait de ne
  33.                                            // pas afficher les password, si  
  34.                                            // quelqu'un a une idée géniale ?
  35.             }
  36.             cout<<endl;
  37.             liste.close();
  38.     }
  39.     else
  40.             cerr << "Impossible d'ouvrir le fichier !" << endl;
  41. }
  42. void ecriture()
  43. {
  44.     system("cls" );
  45.    
  46.     char _p;
  47.     while((toupper(_p)!='A') && (toupper(_p)!='U'))
  48.     {
  49.         cout<<"Creation d'un compte admin (A) ou utilisateur (U) ? ";
  50.         cin>>_p;
  51.     }
  52.    
  53.     fstream compte("test.txt", ios::in | ios::out | ios::ate);
  54.    
  55.     if(compte)
  56.     {
  57.             string s, u;
  58.            
  59.             cout<<"Nouveau LOGIN : ";
  60.             cin>>s;
  61.             cout<<"Nouveau PASS : ";
  62.             cin>>u;
  63.             string admin = "***ADMIN***", user = "***USER***";
  64.            
  65.             if(toupper(_p)=='A')
  66.             {
  67.                 cout<<endl<<"admin"<<endl;
  68.                 string ligne;
  69.                
  70.                 while(getline(compte, ligne))
  71.                 {
  72.                     cout<<endl<<"boucle"<<endl; // le programme ne passe jamais
  73.                                                 // par ici !!
  74.                     if(strstr(ligne.c_str(), admin.c_str()))
  75.                         break;
  76.                 }
  77.                 cout << "ecriture" << endl;
  78.                 compte << endl << s << " // " << u;
  79.             } 
  80.             if(toupper(_p)=='U')
  81.             {
  82.                 cout<<endl<<"user"<<endl;
  83.                 string ligne;
  84.                
  85.                 while(getline(compte, ligne))
  86.                 {
  87.                     cout<<endl<<"boucle"<<endl; // le programme ne passe jamais
  88.                                                 // par ici !!
  89.                     if(strstr(ligne.c_str(), user.c_str()))
  90.                         break;
  91.                 }
  92.                 cout << "ecriture" << endl;
  93.                 compte << endl << s << " // " << u;
  94.             }
  95.             cout << "fini" << endl;
  96.            
  97.             compte.close();
  98.     }
  99.     else
  100.         cerr << "Impossible d'ouvrir le fichier!"<<endl;
  101.        
  102. }


 
La compilation se déroule sans problème, mais lors de l'exécution, si je teste l'écriture, j'ai ceci :
 

Code :
  1. Creation d'un compte admin (A) ou utilisateur (U) ? a
  2. Nouveau LOGIN : test
  3. Nouveau PASS : coucou
  4. admin
  5. ecriture
  6. fini
  7. Appuyez sur une touche pour continuer...


 
Le programme ne rentre donc jamais dans la boucle pour détecter les chaînes de caractère "***ADMIN***" et "***USER***" , et en plus l'écriture ne se produit pas dans mon fichier texte... Quelqu'un aurait-il une idée pour m'aider ?  
 
D'avance merci  :jap:

Reply

Marsh Posté le 03-01-2010 à 18:34:26   

Reply

Marsh Posté le 03-01-2010 à 20:06:08    

Salut

 

ios::ate (at end) Set the stream's position indicator to the end of the stream on opening.

 

Je pense que tu essaies lire alors que tu es à la fin du fichier

 

edit: il y a des find dans la classe string plutot que strstr


Message édité par ptitchep le 03-01-2010 à 20:08:41

---------------
deluser --remove-home ptitchep
Reply

Marsh Posté le 03-01-2010 à 20:24:38    

Merci pour ta réponse !

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed