odczyt z pliku nie działa jak powinien
Ostatnio zmodyfikowano 2016-05-13 23:11
Damian155 Temat założony przez niniejszego użytkownika |
odczyt z pliku nie działa jak powinien » 2016-05-13 08:01:53 Witam Mam problem z odczytywaniem save z pliku.Po pierwszej grze program zapisuje potrzebne dane do pliku, a przy następnym uruchomieniu można to wczytać(w teorii). Problem w tym, że program (chyba) to doczytuje ale nie wprowadza do zmiennych gry :/ (tu argument dlaczego nie) zapisałem linijkę która miała wypisać na ekran ilość pieniędzy z pliku. No i nic się nie dzieje. Kompilator nie wykrył żadnych błędów ani ostrzeżeń :/ To mój pierwszy większy program więc może być trochę chaotyczny :D Proszę Was o pomoc. ladowanie_1.open( "save/save_1.SAVE", std::ios::in ); if( ladowanie_1.good() == true ) { std::cout << "znalazlem" << std::endl; } while( getline( ladowanie_1, linia ) );
{ switch( nr_linii ) { case 1: pieniadze = atoi( linia.c_str() ); break; case 2: tendencja = atoi( linia.c_str() ); break; case 3: tendencja_sila_ludzka = atoi( linia.c_str() ); break; case 4: tendencja_stal = atoi( linia.c_str() ); break; case 5: tendencja_zywnosc = atoi( linia.c_str() ); break; case 6: licznik_budowy_fab = atoi( linia.c_str() ); break; case 7: licznik_budowy_farm = atoi( linia.c_str() ); break; case 8: licznik_budowy_kosza = atoi( linia.c_str() ); break; case 9: licznik_budowy_przemysl = atoi( linia.c_str() ); break; case 10: licznik_budowy_stal = atoi( linia.c_str() ); break; case 11: licznik_rozbudowy_1 = atoi( linia.c_str() ); break; case 12: licznik_rozbudowy_2 = atoi( linia.c_str() ); break; case 13: zywnosc = atoi( linia.c_str() ); break; case 14: ludzie = atoi( linia.c_str() ); break; case 15: stal = atoi( linia.c_str() ); break; case 16: status_fab = linia; break; case 17: status_farm = linia; break; case 18: status_kosza = linia; break; case 19: status_przemysl = linia; break; case 20: status_stal = linia; break; case 21: pole_budowy_1 = linia; break; case 22: pole_budowy_2 = linia; break; std::cout << pieniadze; } nr_linii++; } A i jeszcze takie pytanie: Da się odwołać do konkretnej linijki w pliku. Sorry ale tak średnio umiem odczyt :/ |
|
darko202 |
» 2016-05-13 08:40:43 |
|
Damian155 Temat założony przez niniejszego użytkownika |
» 2016-05-13 08:59:08 No ok, ale nadal nie widzę błędu w kodzie :/ Dodatkowo pytanie: Czy można debugować w Code::blocksie ? Jest tam zakłada debug ale wszystko jest nie aktywne :( |
|
mateczek |
» 2016-05-13 09:09:00 Musiał byś wkleić kod, który da się skompilować aby sprawdzić co się dzieje. Błąd może być gdzieś zupełnie indziej niż się tobie wydaje. narazie mogę strzelać że może tutaj jest bubel ladowanie_1.open( "save/save_1.SAVE", std::ios::in ); if( ladowanie_1.good() == true ) { std::cout << "znalazlem" << std::endl; } nr_linii = 1; while( getline( ladowanie_1, linia ) );
{ switch( nr_linii ) { case 1: pieniadze = atoi( linia.c_str() ); break; case 2: tendencja = atoi( linia.c_str() ); break; case 3: tendencja_sila_ludzka = atoi( linia.c_str() ); break; case 4: tendencja_stal = atoi( linia.c_str() ); break; case 5: tendencja_zywnosc = atoi( linia.c_str() ); break; case 6: licznik_budowy_fab = atoi( linia.c_str() ); break; case 7: licznik_budowy_farm = atoi( linia.c_str() ); break; case 8: licznik_budowy_kosza = atoi( linia.c_str() ); break; case 9: licznik_budowy_przemysl = atoi( linia.c_str() ); break; case 10: licznik_budowy_stal = atoi( linia.c_str() ); break; case 11: licznik_rozbudowy_1 = atoi( linia.c_str() ); break; case 12: licznik_rozbudowy_2 = atoi( linia.c_str() ); break; case 13: zywnosc = atoi( linia.c_str() ); break; case 14: ludzie = atoi( linia.c_str() ); break; case 15: stal = atoi( linia.c_str() ); break; case 16: status_fab = linia; break; case 17: status_farm = linia; break; case 18: status_kosza = linia; break; case 19: status_przemysl = linia; break; case 20: status_stal = linia; break; case 21: pole_budowy_1 = linia; break; case 22: pole_budowy_2 = linia; break; std::cout << pieniadze; } nr_linii++; if( nr_linii == 23 ) nr_linii = 1; }
Debuguje się wszędzie podobnie. ikonka z robalem i Praca krokowa. https://www.youtube.com/watch?v=L9JvSHYLvuw |
|
Damian155 Temat założony przez niniejszego użytkownika |
» 2016-05-13 09:23:13 Dziękuję za pomoc, na razie już nie mam czasu ale później zobaczę czy coś to zmieni |
|
Monika90 |
» 2016-05-13 11:02:39 zapisałem linijkę która miała wypisać na ekran ilość pieniędzy z pliku. No i nic się nie dzieje. |
Bo ją zapisałeś w takim miejscu że się nigdy nie wykona. std::cout << pieniadze; powinno być po instrukcji switch, a nie w środku. |
|
michal11 |
» 2016-05-13 11:11:27 Może nie zamykasz pliku save ?
Poza tym jeżeli to całe twoje wczytywanie danych z pliku to moim zdaniem bez sensu jest tu tużycie pętli, ten swich i pętla to tylko dodatkowe instrukcje, daj to jako normalny blok instrukcji i już. |
|
Monika90 |
» 2016-05-13 11:30:56 Taki sposób wczytywania z pliku pochodzi z kursu Zelenta. Zamiast tego można wczytać normalnie ladowanie_1 >> pieniadze >> tendencja >> tendencja_sila_ludzka >> itd...
Nawet z tekstem zawierającym spacje można sobie poradzić za pomocą manipulatora std::quoted |
|
« 1 » 2 |