[C++] Problème de crash
lolpuppy
-
lolpuppy -
lolpuppy -
Bonjour, j'ai 13 ans, je m'appelle Laurent et je commence le c++ et j'ai fais un programme (plutôt inutile) mais il plante. Il est supposé demandé de créer un compte si aucun n'est créé ou de se connecter. Tout marche bien pour la création et l'écriture dans les fichiers jusqu'a se que l'on se connecte où ça plante. J'espère trouver de l'aide ici.
Voici mon code
PS.Ne prenez pas compte des commentaires de la fin et des #include inutile car je testait certaines fonction
Merci de votre (future) aide
Voici mon code
#include <iostream>
#include <string>
#include <fstream>
#include <vector>
#include <cstdlib>
#include <windows.h>
using namespace std;
int main()
{
string pseudo,mdp;
double nombre;
string ligne;
unsigned int nbUser(0);
int autre(0);
bool vrai;
int save;
ifstream Lid("texte.txt");
//ifstream LnbUser("nb.txt");
//ofstream EnbUser("nb.txt");
if(Lid)
{
connection:
while(getline(Lid, ligne))
{
nbUser++;
}
string user[nbUser];
cout <<nbUser / 2;
while(getline(Lid, ligne))
{
user[autre] = ligne; //Pernser a integrer Ceci a la boucle...
autre++;
}
do
{
cout <<"Identifiant : ";
cin >>pseudo;
cout <<endl<<"Mdp : ";
cin >>mdp;
vrai = true;
for(int i(0);vrai == true;i++)
{
if(user[i]== pseudo)
{
save = i;
vrai = false;
}
}
}while(user[save] != mdp);
}
else
{
cout << "Vous devez vous creer un identifiant."<<endl<<"Entrer un pseudo : ";
cin >> pseudo;
cout << "Entrer un mot de passe : ";
cin >>mdp;
ofstream Eid("texte.txt", ios::app);
Eid <<pseudo<<endl; //Écriture dans les fichiers
Eid <<mdp<<endl; //Écriture dans les fichiers
goto connection;
//LnbUser >> nombre;
//nombre++;
//EnbUser << nombre;
}
//system("cls");
//system ("Pause");
//Beep(597,100000);
return 0;
}
PS.Ne prenez pas compte des commentaires de la fin et des #include inutile car je testait certaines fonction
Merci de votre (future) aide
1 réponse
-
int main() { string pseudo,mdp; double nombre; string ligne; unsigned int nbUser=0; int autre=0; // les entier se définissent ainsi. bool vrai; int save; ifstream Lid("texte.txt"); if(Lid) { connection: while(getline(Lid, ligne)) { nbUser++; } string user[nbUser]; cout <<nbUser / 2; while(getline(Lid, ligne)) // ne devrait rien donner, car Lid pointe en fin de fichier, il faut que tu remettes le pointeur de fichier au début avant de lire à nouveau. { user[autre] = ligne; //Pernser a integrer Ceci a la boucle... autre++; } do { cout <<"Identifiant : "; cin >>pseudo; cout <<endl<<"Mdp : "; cin >>mdp; save=-1; for(int i=0;i<nbUser;i++)Ici la condition de sortie la plus importante c'est i<nbUser, car si tu ne tapes pas un pseudo existant tu riques de sortir de ton tableau { if(user[i]== pseudo) { save = i; break;// sort de la boucle for } } }while(user[save] != mdp || save==-1);// j'ai ajouté la condition de continuer jusqu'à ce que tu saisisse un pseudo valable. } else { ... } return 0; }
J'ai un peu modifier ton algorithme, de manière à ce qu'il soit plus classique. Le tiens n'était pas faux, mais incomplet avec un risque important de sortir du tableau user.