Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Problem z zapisem danych do pliku.

Ostatnio zmodyfikowano 2018-03-03 14:51
Autor Wiadomość
Irish
Temat założony przez niniejszego użytkownika
Problem z zapisem danych do pliku.
» 2018-03-03 10:36:16
Mam problem z zapisem do danych w pliku, nie rozumiem za bardzo gdzie jest błąd. Chce żeby program zapisał dane po rejestracji a w przyszłości odczytał dane do logowania z pliku, żeby nie trzeba było się rejestrować za każdym razem po zamknięciu programu.
C/C++
#include <iostream>
#include <conio.h>
#include  <string>
#include <fstream>
using namespace std;

void opcje()
{
    cout << "[1] Rejstracja " << endl;
    cout << "[2] Logowanie" << endl;
    cout << "[0] wyjscie z programu " << endl;
}

int main()
{
    int wybor;
   
    string login, haslo, a, b;
    opcje();
    do
    {
       
        cout << "Wybieram opcje: ";
        cin >> wybor;
        switch( wybor )
        {
           
        case 1:
           
            cout << "Podaj l: ";
            cin >> a;
            cout << "Podaj h: ";
            cin >> b;
            fstream haslo;
            haslo.open( "haslo1.txt", ios::in );
            if( haslo.good() == false )
            {
                cout << "Plik nie istnieje.";
            }
            haslo << a;
            haslo << b;
            haslo.close();
            haslo.clear();
            break;
           
        case 2:
        poczatek:
            cout << "Podaj login: ";
            cin >> login;
            cout << "Podaj haslo: ";
            cin >> haslo;
            if( haslo == b && login == a )
            {
                goto dalej;
            }
            else
            {
                cout << "Haslo lub login nie prawidlowe" << endl;
                goto poczatek;
            }
           
            break;
        }
       
    }
    while( wybor != 0 );
   
    dalej:
   
    cout << "dalej";
   
   
    getch();
    return 0;
}
P-169698
YooSy
» 2018-03-03 10:52:47
Mam problem z zapisem do danych w pliku, nie rozumiem za bardzo gdzie jest błąd.
Jaki problem? Konkretniej.

Używasz instrukcji w niewłaściwej kolejności. Wpierw zamykasz plik, a później czyścisz flagi strumienia?

Uzywanie goto należy unikać, a w tak prostych programach absolutnie nie używać.

Jeśli uruchomisz program i wykonasz od razu case 2: obiekty a i b będą puste. Przed ich uzyciem sprawdzaj czy nie są a.empty();. Proponuję prześledzić wszystkie możliwe gałęzie przebiegu programu i rozpisać na kartce jak i czy zmieniają się zmienne.

W przypadku jednokierunkowego używania strumienia plikowego, łatwiej będzie ogarnąć kod używając ofsteeam i ifstream.
P-169699
pekfos
» 2018-03-03 14:51:45
Otwierasz plik w trybie tylko do odczytu.
P-169703
« 1 »
  Strona 1 z 1