• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Wczytywanie z pliku

0 głosów
643 wizyt
pytanie zadane 30 grudnia 2015 w C i C++ przez Jonki Dyskutant (8,180 p.)
edycja 30 grudnia 2015 przez Jonki

Piszę sobie po raz kolejny bankomat, tylko coraz to bardziej rozbudowany i pojawił mi się problem z wczytywanie z pliku. Do tabeli 'dluznicy' przypisuje mi jakąś dziwną liczbę, nie wiem dlaczego to tak się dzieje. Może ktoś wie o co chodzi, bo ja nie mogę sobie z tym poradzić. W niektórych miejscach funkcji wpisałem wypisywanie na ekran tylko po to, aby zobaczyć w którym momencie coś się psuje i gdy wpisałem 'cout << "Dluznicy: " << dluznicy[1];' pokazuje mi jakąś dziwnie wielką liczbę, a powinno w tym miejscu być 0.



void Klient::zadluzanie(int *index, int *pozyczka)
{
    fstream plik;

    Bankomat bank;

    bank.wczytaj_ilosc_klientow();

    int *dluznicy = new int[bank.ilosc_klientow];

    int licznik = 0;

    if(*index == '0')
        plik.open("dluznicy_DAN.txt", ios::in);
    else if(*index == '1')
        plik.open("dluznicy_KADA.txt", ios::in);

    cout << "Index: " << *index << endl;
    cout << "Pozyczka: " << *pozyczka << endl;

    system("pause");

    if(plik.good() == false)
    {
        system("cls");
        cout << "Blad polaczeenia z baza danych!";
        Sleep(2000);
    }
    else
    {
        while(!plik.eof())
        {
            plik >> dluznicy[licznik];
            licznik++;
        }

        cout << "Dluznicy: " << dluznicy[1];

        system("pause");

        plik.close();
        plik.clear();

        if(*index == '0')
            plik.open("dluznicy_DAN.txt", ios::out);
        else if(*index == '1')
            plik.open("dluznicy_KADA.txt", ios::out);

        if(plik.good() == false)
        {
            system("cls");

            cout << "Blad polacznia z baza danych!";
            Sleep(2000);
        }
        else
        {
            for(int i = 0; i < bank.ilosc_klientow; i++)
            {
                if(i == _index)
                    plik << *pozyczka << endl;
                else
                    plik << dluznicy[i] << endl;
            }
        }
    }

    delete [] dluznicy;

    plik.close();
    plik.clear();
}

 

1 odpowiedź

0 głosów
odpowiedź 30 grudnia 2015 przez Xenox Użytkownik (580 p.)

A jesteś pewny, że wczytujesz więcej niż 1 liczbę, bo tablice indeksujemy od 0?

dluznicy[0], dluznicy[1], ..., dluznicy[iloscElementowTablicy-1];

 

komentarz 30 grudnia 2015 przez Jonki Dyskutant (8,180 p.)
Tak, jestem pewien.
komentarz 30 grudnia 2015 przez Jonki Dyskutant (8,180 p.)
OK, znalazłem problem. Zmienna *index była typu int, a nie char.

Podobne pytania

0 głosów
1 odpowiedź 1,032 wizyt
pytanie zadane 10 grudnia 2015 w C i C++ przez baszmest Gaduła (3,080 p.)
0 głosów
1 odpowiedź 374 wizyt
pytanie zadane 1 stycznia 2016 w C i C++ przez ToSzem Nowicjusz (170 p.)
–1 głos
2 odpowiedzi 1,026 wizyt
pytanie zadane 28 lutego 2016 w C i C++ przez Łukasz Kutyński Początkujący (330 p.)

93,733 zapytań

142,669 odpowiedzi

323,287 komentarzy

63,293 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

Twierdza Linux. Bezpieczeństwo dla dociekliwych

Aby uzyskać rabat -10%, użyjcie kodu pasja-linux, wpisując go w specjalne pole w koszyku.

...