[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
A voir également:
- [C++] Problème de crash
- Windows crash - Guide
- Crash dump ✓ - Forum Antivirus
- Nvlddmkm crash ✓ - Forum Windows
- Lol crash au lancement de la partie - Forum jeux en ligne
- Probléme League of Legend ✓ - Forum Jeux PC
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.
Char Snipeur
Messages postés
9813
Date d'inscription
Statut
Contributeur
Dernière intervention
1 299
je viens aussi de remarqué que tu ne sortira JAMAIS de ta boucle. Explique nous comment tu stockes mot de passe et pseudo.
Lolpupy
La premiere boucle du if est pour savoir combien d'utilisateur il y a et j'ai testé et elle sort, la seconde lit une ligne et la stoque dans un tableau ( On peut aussi faire avec des tableau dynamique)
Char Snipeur
Messages postés
9813
Date d'inscription
Statut
Contributeur
Dernière intervention
1 299
je te parle de ta dernière boucle, celle en do while. Si user[i]==pseudo, alors save=i et tu compare user[save==i] avec mdp. Il est clair que user sera forcément différent de mdp.
lolpuppy
oops j'ai trouvé Ca vas etre user[save+1]
lolpuppy
Ça marche!!!!