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

Problem z odczytywaniem danych z pliku

Ostatnio zmodyfikowano 2016-06-22 14:43
Autor Wiadomość
dytryh
Temat założony przez niniejszego użytkownika
Problem z odczytywaniem danych z pliku
» 2016-06-22 13:15:33
Witam! Jestem początkującym programistą i dla wypróbowania siebie postanowiłem napisać dość prosty program. Niestety, występuje w nim problem. Ogólnym założeniem programu było działanie, jak bankomat. Chciałem dodać do niego jeszcze zapis pinu do pliku i-jeżeli jest już zapisany to przy ponownym uruchomieniu nie musieć wpisywać go od nowa. Program działa dobrze, poza jednym: czytaniem z pliku. Proszę o pomoc z programem.
C/C++
#include <iostream>
#include <stdio.h>
#include <fstream>
#include <windows.h>
#include <stdio.h>

using namespace std;
char a;
fstream plik;
int pin, pinb, pinc, pind, kwota, b = 0, i = 1, o = 0;
string kupa;

int main()
{
    plik.open( "pin.sst", ios::in );
    if( plik.good() == false )
    {
        b = 1;
        cout << "Witaj w pierwszym logowaniu do systemu! Wpisz swoj pin: "; cin >> pin;
        while(( pin > 9999 ) ||( pin < 1000 ) )
        {
            cout << "Sprobuj wpisac inny pin, ten jest nieprawidlowy!: "; cin >> pin;
        }
        cout << "Powtoz swoj pin: "; cin >> pinb;
        plik.close();
        plik.open( "pin.sst", ios::out );
        plik << pin;
        plik.close();
        while( pin != pinb )
        {
            cout << "Piny podane przez ciebie nie zgadzaja sie! Sprobuj ponownie: "; cin >> pinb;
        }
    }
   
   
   
    plik.open( "pin.sst", ios::in ); //miejsce wystapienia problemu
    getline( plik, kupa );
    pinc = atoi( kupa.c_str() );
    plik.close();
    //cout<<pinc<<endl<<kupa<<endl;
   
   
   
   
    if( b == 1 )
    {
        cout << "Kliknij enter aby przejsc do nastepnego kroku"; getchar(); getchar();
        system( "cls" );
    }
    else
    {
        cout << "Witaj w bankomacie!" << endl << "Wpisz swoj kod PIN: "; cin >> pind;
        while( pin != pind )
        {
            cout << "Podano nieprawidlowy pin! Sprobuj ponownie: "; cin >> pind;
            o++;
            if( o == 2 )
            {
                cout << "Podano zly pin trzykrotnie! Program zakonczy sie!";
                getchar(); getchar();
                exit( 0 );
            }
        }
    }
    plik.close();
    cout << "Podaj kwote, ktora chcesz wybrac: "; cin >> kwota;
    return 0;
}
P-149372
marcolo2307
» 2016-06-22 13:23:44
Pewnie plik się nie otwiera, może zła lokalizacja?
P-149373
dytryh
Temat założony przez niniejszego użytkownika
Plik sie otwiera
» 2016-06-22 13:42:25
Tutaj link do skompilowanej wersji: http://www113.zippyshare.com/v/HxyKVRZc/file.html
Problem można zauważyć dopiero po kilkukrotnym otworzeniu programu. (pin to 0(nie czyta z pliku))
P-149375
carlosmay
» 2016-06-22 14:01:04
C/C++
plik.open( "pin.sst", ios::in ); //miejsce wystapienia problemu
getline( plik, kupa );
pinc = atoi( kupa.c_str() );
plik.close();
Nie sprawdzasz czy udało się otworzyć plik,
ew. czy stan strumienia jest poprawny przed odczytem.

http://cpp0x.pl/kursy/Kurs-C++​/Poziom-4​/Wczytywanie-zawartosci-pliku-​a-kontrola-bledow​/485
P-149376
dytryh
Temat założony przez niniejszego użytkownika
» 2016-06-22 14:10:37
Sprawdź wyżej. Jeżeli nie ma takiego pliku to się tworzy, a jeżeli jest to od razu przechodzi do tego miejsca.
P-149377
dytryh
Temat założony przez niniejszego użytkownika
» 2016-06-22 14:36:02
Ok, kod działa, nie chciał chodzić z tym samym fstreamem(plik), zrobiłem 2 (jajo) i chodzi dobrze :D
C/C++
jajo.open( "pin.txt", ios::in );
while( jajo.good() == false )
{
    cout << "Error 404";
    getchar();
    exit( 0 );
}
getline( jajo, kupa );
pinc = atoi( kupa.c_str() );
jajo.close();
P-149378
carlosmay
» 2016-06-22 14:41:15
Jeżeli nie ma takiego pliku to się tworzy, a jeżeli jest to od razu przechodzi do tego miejsca.
Próbowałeś otwierać otwarty plik.

Po każdym otwieraniu sprawdzaj czy wszystko jest jak należy.
W przytoczonym przeze mnie fragmencie, nie jest sprawdzana poprawność pliku.
P-149379
dytryh
Temat założony przez niniejszego użytkownika
» 2016-06-22 14:43:44
No tak! Dzieki za pomoc!
P-149380
« 1 »
  Strona 1 z 1