Problem z operacjami na plikach

0

Mam problem z operacjami na plikach w dwóch miejscach swojego programu. Prawdopodobnie to jest ten sam problem ale siedziałem trochę na tym, i nie mam pojęcia już co to może być.

  1. W tym fragmencie kodu problem jest taki że jeżeli wpiszę nazwe istniejącego pliku za pierwszym razem - wszystko będzie okej, plik się otworzy. Jednak jak wpisze raz źle, a następny raz już poprawnie to za każdym razem już mam błąd że zła nazwa.
char filename[5]; //próbowałem na stringach, również nie działało. Char dla mnie lepszy o tyle że ogranicza wielkość nazwy (Tyle że właśnie u mnie nie ogranicza, ale to dodatkowe wymaganie - nie musi być spełnione)
bool one=1;
                    do
                    {
                        cls();
                        //delete[] filename <-Nie pomaga, ale również nie przeszkadza.

                        //bufor_plikowy.close(); <-
                        //bufor_plikowy.open(filename,ios::in); <- to też nic nie daje, myślałem że będzie mi resetować wszystko.
                        cout << "podaj id gracza"<< endl<< "ID: ";
                        cin >> filename[5];
                        bufor_plikowy.open(filename,ios::in);
                        if(bufor_plikowy.good())
                        {
                            player(); 
                            pau();
                        }
                        else
                        {
                            cout <<"nie ma takiego gracza. 0 - wyjscie, 1 - ponowne wpisywanie";
                            cin >> one;
                        }
                    }
                    while(one==1);
  1. Błąd tego samego typu co wyżej, za pierwszym razem działa, za każdym następnym pętla while w ogóle się nie wykonuje
void sprawdz_stan_konta()
        {
            string line;
            int ile_kasy;
            int m=0;
            while(! bufor_plikowy.eof() )
            {
                if (m==3)
                {
                    bufor_plikowy >> ile_kasy;
                    cout << ile_kasy;
                }
            getline (bufor_plikowy,line);
                m++;
            }
        };

Jak to naprawić? :D

0
  1. cin >> setw(4) >> filename;
  2. dodaj na koniec: bufor_plikowy.clear(); bufor_plikowy.seekg(0,ios::beg);
0

Drugie naprawione, dzięki! :D

Ale pierwsze, nie. Po dodaniu tego nic się nie zmienia, nadal działa tylko za pierwszym razem ;/

0

Na pierwsze trza mózg włączyć i zastosować to drugie dla pierwszego też.

0

Również próbowałem te z drugiego metody dodać, nic nie zmieniają.

edit::
Dalej nie mam pomysłów, zamieniłem kod na string i szukałem po necie jak mogę to naprawić. Nadal problem jest ten sam.

bool one=1;
                    do
                    {
                        cls();
                        
                        cout << "podaj id gracza"<< endl<< "ID: ";
                        cin.sync();
                        getline(cin,filename);
                        bufor_plikowy.open(filename.c_str(),ios::in);
                        if(bufor_plikowy.good())
                        {
                            osoba gracz;
                            gracz.player();
                            pau();
                        }
                        else
                        {
                            cout <<"nie ma takiego gracza. 0 - wyjscie, 1 - ponowne wpisywanie";
                            cin >> one;
                        filename.clear();
                        //filename.seekg(0,ios::beg);
                        }
                    }
0

Czy cokolwiek rozumiesz w tym kodzie co pokazałeś?

0
_13th_Dragon napisał(a):

Czy cokolwiek rozumiesz w tym kodzie co pokazałeś?

Tak. Nie. Nie wiem.
Nie wiem co mam ci napisać, próbuje już na wszystkie sposoby byle by działało, potrzebuje to a już kompletnie nie mam czasu na analizowanie po raz x całego kodu bo muszę do jutra napisać kolejny projekt...

Czy ktokolwiek może mi podać jakieś rozwiązanie które usunie mi ten błąd???

0

Już ci podałem rozwiązanie, tylko że ty nie rozumiesz o czym mówię z tego powodu że nie rozumiesz ani wiersza w tym kodzie co podałeś.

0
_13th_Dragon napisał(a):

Już ci podałem rozwiązanie, tylko że ty nie rozumiesz o czym mówię z tego powodu że nie rozumiesz ani wiersza w tym kodzie co podałeś.

Gdzie działające rozwiązanie podałeś? :o

_13th_Dragon napisał(a):
  1. cin >> setw(4) >> filename;

po wpisaniu tego, jeśli podam więcej znaków niż setw(liczba-1) to tworzy się nieskończona pętla, gdy podam mniej niż ta wartość to nigdy nie znajduje pliku, nawet jeśli takowy istnieje.

_13th_Dragon napisał(a):
  1. dodaj na koniec: bufor_plikowy.clear(); bufor_plikowy.seekg(0,ios::beg);

Gdziekolwiek bym tego nie dał to nic się nie zmienia. Cały czas się dzieje tak jak napisałem powyżej

0

Odświeżam. A to dla tego że rozwiązałem swój problem - a właściwie sam się rozwiązał. A rozwiązał się tak, że na komputerach na mojej uczelni po prostu ten błąd nie występował... Ale za to występowało wiele innych... I właśnie przez inne błędy nie zaliczyłem projektu i muszę go poprawić, bo po prostu program nie chciał się kompilować...

I tu nasuwa mi się jedno pytanie, a nie chce zakładać nowego tematu - jaki polecacie kompilator/środowisko/program aby pisać na nim programy w c++, tak aby na innych komputerach (posiadających ten że program) działały i kompilowały się identycznie?

0

Code::Blocks z Mingw?

0

Właśnie pisałem w code::blocks. ;/ Ale to Mingw brzmi ciekawie, przyjże się temu, dzięki!

0
Isumi napisał(a):

Właśnie pisałem w code::blocks. ;/ Ale to Mingw brzmi ciekawie, przyjże się temu, dzięki!

Chyba nie zaliczysz tego projektu, a to z prostego powodu: skoro ktoś każe ci napisać projekt z programowania to zakłada, że posiadasz chociaż podstawową - minimalnie minimalną wiedzę z zakresu programowania w języku, w którym masz to napisać. Ty tą wiedzą się nie wykazujesz. Nie jesteś w stanie napisać "wszędzie działającego" dobrego programu skoro nie wiesz nawet co to kompilator. Mimo to życzę ci jak najlepiej.

0

Dobra, dobra ;d W sumie nie przypominam sobie żeby gadali coś mi kiedykolwiek o kompilatorach, mówią jedynie/pokazują w jakim programie pisać to pisze ;d
A mingww to tylko w google szybko zajrzałem co to jest, było że cośtam związane z przerabianiem na exeki to uznałem że to coś przydatnego, jak pisałem posta to nie miałem czasu żeby więcej o tym przeczytać.

1 użytkowników online, w tym zalogowanych: 0, gości: 1