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

Zapis i odczyt z pliku

0 głosów
64 wizyt
pytanie zadane 4 dni temu w C i C++ przez Nikso Nowicjusz (140 p.)

Witam, mam drobny problem. Zrobiłem program dzięki któremu można dostać różną ilość żetonów do jednej zmiennej int czyli int chips;

Chciałbym aby po otrzymaniu żetonów ich ilość zapisywała się do pliku "save.txt" a kiedy otworzyłbym ponownie program wczytywało z pliku wartość zmiennej chips;

Oto kod:

#include<iostream>
#include<time.h>
#include<cstdlib>
#include<conio.h>
#include<fstream>

using namespace std;

int chips;
int choice;
int dc;
int nagroda;
fstream file("save.txt");

void menu()
{
	system("cls");
    cout << "1. Nagroda\n"; 
    cout << "Żetony: " << chips << '\n';
    cout << endl;
    cout << "Wybierz\n";
    cin >> choice;
}

void reward()
{
         cout << "Nagroda\n";
         sleep(2);
     	system("cls");
     	cout << "Kliknij 0 aby wrócić do menu, kliknij 1 aby grać dalej\n";
         cin >> dc;
         if (dc == 0)
         {
         	menu();
         }
         else if (dc == 1)
         {
         	cout << "Kliknij Enter aby zobaczyć nagrode\n";
         	system("pause");
             srand(time(NULL));
             nagroda = rand()%8+1;
            
             if(nagroda == 1)
             {
                 chips += 1000;
             	cout << "Twoja nagroda: 1 000 Żetonów\n";
             	cout << "Mozesz losować za 3 minuty\n";
             	cout << "Jeśli klikniesz 1 będziesz musiał czekać 3 minuty\n";
             	cout << "Kliknij 0 aby wrócić do menu, kliknij 1 aby grać dalej\n";
                 cin >> dc;
                 if (dc == 0)
                 {
                 	menu();
                 }
                 else if (dc == 1)
                 {
                 	system("cls");
                 	cout << "Mozesz losować za 3 minuty\n";
                 	cout << "Uwaga: Nie spam literami ani liczbami\n";
                     sleep(180);
                     reward();
                 }
             }
             else if(nagroda == 2)
             {
             	chips += 5000;
             	cout << "Twoja nagroda: 5 000 Żetonów\n";
             	cout << "Jeśli klikniesz 1 będziesz musiał czekać 3 minuty\n";
             	cout << "Kliknij 0 aby wrócić do menu, kliknij 1 aby grać dalej\n";
             	cin >> dc;
                 if (dc == 0)
                 {
                 	menu();
                 }
                 else if (dc == 1)
                 {
                 	system("cls");
                 	cout << "Mozesz losować za 3 minuty\n";
                 	cout << "Uwaga: Nie spam literami ani liczbami\n";
                     sleep(180);
                     reward();
                 }
             }
             else if(nagroda == 3)
             {
             	chips += 10000;
             	cout << "Twoja nagroda: 10 000 Żetonów\n";
             	cout << "Jeśli klikniesz 1 będziesz musiał czekać 3 minuty\n";
             	cout << "Kliknij 0 aby wrócić do menu, kliknij 1 aby grać dalej\n";
             	cin >> dc;
                 if (dc == 0)
                 {
                 	menu();
                 }
                 else if (dc == 1)
                 {
                 	system("cls");
                 	cout << "Mozesz losować za 3 minuty\n";
                 	cout << "Uwaga: Nie spam literami ani liczbami\n";
                     sleep(180);
                     reward();
                 }
             }
             else if(nagroda == 4)
             {
             	chips += 50000;
             	cout << "Twoja nagroda: 50 000 Żetonów\n";
             	cout << "Jeśli klikniesz 1 będziesz musiał czekać 3 minuty\n";
             	cout << "Kliknij 0 aby wrócić do menu, kliknij 1 aby grać dalej\n";
             	cin >> dc;
                 if (dc == 0)
                 {
                 	menu();
                 }
                 else if (dc == 1)
                 {
                 	system("cls");
                 	cout << "Mozesz losować za 3 minuty\n";
                 	cout << "Uwaga: Nie spam literami ani liczbami\n";
                     sleep(180);
                     reward();
                 }
             }
             else if(nagroda == 5)
             {
             	chips += 100000;
             	cout << "Twoja nagroda: 100 000 Żetonów\n";
             	cout << "Jeśli klikniesz 1 będziesz musiał czekać 3 minuty\n";
             	cout << "Kliknij 0 aby wrócić do menu, kliknij 1 aby grać dalej\n";
             	cin >> dc;
                 if (dc == 0)
                 {
                 	menu();
                 }
                 else if (dc == 1)
                 {
                 	system("cls");
                 	cout << "Mozesz losować za 3 minuty\n";
                 	cout << "Uwaga: Nie spam literami ani liczbami\n";
                     sleep(180);
                     reward();
                 }
             }
             else if(nagroda == 6)
             {
             	chips += 500000;
             	cout << "Twoja nagroda: 500 000 Żetonów\n";
             	cout << "Jeśli klikniesz 1 będziesz musiał czekać 3 minuty\n";
             	cout << "Kliknij 0 aby wrócić do menu, kliknij 1 aby grać dalej\n";
             	cin >> dc;
                 if (dc == 0)
                 {
                 	menu();
                 }
                 else if (dc == 1)
                 {
                 	system("cls");
                 	cout << "Mozesz losować za 3 minuty\n";
                 	cout << "Uwaga: Nie spam literami ani liczbami\n";
                     sleep(180);
                     reward();
                 }
             }
             else if(nagroda == 7)
             {
             	chips += 1000000000;
             	cout << "Twoja nagroda: 1 000 000 000 Żetonów\n";
             	cout << "Jeśli klikniesz 1 będziesz musiał czekać 3 minuty\n";
             	cout << "Kliknij 0 aby wrócić do menu, kliknij 1 aby grać dalej\n";
             	cin >> dc;
                 if (dc == 0)
                 {
                 	menu();
                 }
                 else if (dc == 1)
                 {
                 	system("cls");
                 	cout << "Mozesz losować za 3 minuty\n";
                 	cout << "Uwaga: Nie spam literami ani liczbami\n";
                     sleep(180);
                     reward();
                 }
             }
             else if(nagroda == 8)
             {
             	chips += 0;
             	cout << "Twoja nagroda: 0 Żetonów\n";
             	cout << "Jeśli klikniesz 1 będziesz musiał czekać 3 minuty\n";
             	cout << "Kliknij 0 aby wrócić do menu, kliknij 1 aby grać dalej\n";
             	cin >> dc;
                 if (dc == 0)
                 {
                 	menu();
                 }
                 else if (dc == 1)
                 {
                 	system("cls");
                 	cout << "Mozesz losować za 3 minuty\n";
                 	cout << "Uwaga: Nie spam literami ani liczbami\n";
                     sleep(180);
                     reward();
                 }
             }
         }
}

int main()
{
	file >> chips;
	menu();
    for(;;)
    switch(choice)
    {
    case 1:
         cout << "Nagroda\n";
         sleep(2);
     	system("cls");
     	cout << "Kliknij 0 aby wrócić do menu, kliknij 1 aby grać dalej\n";
         cin >> dc;
         if (dc == 0)
         {
         	menu();
         }
         else if (dc == 1)
         {
         	cout << "Kliknij Enter aby zobaczyć nagrode\n";
         	system("pause");
             srand(time(NULL));
             nagroda = rand()%8+1;
            
             if(nagroda == 1)
             {
             	chips += 1000;
             	file << chips;
             	file.close();
             	cout << "Twoja nagroda: 1 000 Żetonów\n";
             	cout << "Jeśli klikniesz 1 będziesz musiał czekać 3 minuty\n";
             	cout << "Kliknij 0 aby wrócić do menu, kliknij 1 aby grać dalej\n";
                 cin >> dc;
                 if (dc == 0)
                 {
                 	menu();
                 }
                 else if (dc == 1)
                 {
                 	system("cls");
                 	cout << "Mozesz losować za 3 minuty\n";
                 	cout << "Uwaga: Nie spam literami ani liczbami\n";
                     sleep(180);
                     reward();
                 }
             }
             else if(nagroda == 2)
             {
             	file.open("save.txt", ios::out | ios::trunc);
             	chips += 5000;
             	file >> chips;
             	cout << "Twoja nagroda: 5 000 Żetonów\n";
             	cout << "Jeśli klikniesz 1 będziesz musiał czekać 3 minuty\n";
             	cout << "Kliknij 0 aby wrócić do menu, kliknij 1 aby grać dalej\n";
             	cin >> dc;
                 if (dc == 0)
                 {
                 	menu();
                 }
                 else if (dc == 1)
                 {
                 	system("cls");
                 	cout << "Mozesz losować za 3 minuty\n";
                     sleep(180);
                     reward();
                 }
             }
             else if(nagroda == 3)
             {
             	chips += 10000;
             	cout << "Twoja nagroda: 10 000 Żetonów\n";
             	cout << "Jeśli klikniesz 1 będziesz musiał czekać 3 minuty\n";
             	cout << "Kliknij 0 aby wrócić do menu, kliknij 1 aby grać dalej\n";
             	cin >> dc;
                 if (dc == 0)
                 {
                 	menu();
                 }
                 else if (dc == 1)
                 {
                 	system("cls");
                 	cout << "Mozesz losować za 3 minuty\n";
                 	cout << "Uwaga: Nie spam literami ani liczbami\n";
                     sleep(180);
                     reward();
                 }
             }
             else if(nagroda == 4)
             {
             	chips += 50000;
             	cout << "Twoja nagroda: 50 000 Żetonów\n";
             	cout << "Jeśli klikniesz 1 będziesz musiał czekać 3 minuty\n";
             	cout << "Kliknij 0 aby wrócić do menu, kliknij 1 aby grać dalej\n";
             	cin >> dc;
                 if (dc == 0)
                 {
                 	menu();
                 }
                 else if (dc == 1)
                 {
                 	system("cls");
                 	cout << "Mozesz losować za 3 minuty\n";
                 	cout << "Uwaga: Nie spam literami ani liczbami\n";
                     sleep(180);
                     reward();
                 }
             }
             else if(nagroda == 5)
             {
             	chips += 100000;
             	cout << "Twoja nagroda: 100 000 Żetonów\n";
             	cout << "Jeśli klikniesz 1 będziesz musiał czekać 3 minuty\n";
             	cout << "Kliknij 0 aby wrócić do menu, kliknij 1 aby grać dalej\n";
             	cin >> dc;
                 if (dc == 0)
                 {
                 	menu();
                 }
                 else if (dc == 1)
                 {
                 	system("cls");
                 	cout << "Mozesz losować za 3 minuty\n";
                 	cout << "Uwaga: Nie spam literami ani liczbami\n";
                     sleep(180);
                     reward();
                 }
             }
             else if(nagroda == 6)
             {
             	chips += 500000;
             	cout << "Twoja nagroda: 500 000 Żetonów\n";
             	cout << "Jeśli klikniesz 1 będziesz musiał czekać 3 minuty\n";
             	cout << "Kliknij 0 aby wrócić do menu, kliknij 1 aby grać dalej\n";
             	cin >> dc;
                 if (dc == 0)
                 {
                 	menu();
                 }
                 else if (dc == 1)
                 {
                 	system("cls");
                 	cout << "Mozesz losować za 3 minuty\n";
                 	cout << "Uwaga: Nie spam literami ani liczbami\n";
                     sleep(180);
                     reward();
                 }
             }
             else if(nagroda == 7)
             {
             	chips += 1000000000;
             	cout << "Twoja nagroda: 1 000 000 000 Żetonów\n";
             	cout << "Jeśli klikniesz 1 będziesz musiał czekać 3 minuty\n";
             	cout << "Kliknij 0 aby wrócić do menu, kliknij 1 aby grać dalej\n";
             	cin >> dc;
                 if (dc == 0)
                 {
                 	menu();
                 }
                 else if (dc == 1)
                 {
                 	system("cls");
                 	cout << "Mozesz losować za 3 minuty\n";
                 	cout << "Uwaga: Nie spam literami ani liczbami\n";
                     sleep(180);
                     reward();
                 }
             }
             else if(nagroda == 8)
             {
             	chips += 0;
             	cout << "Twoja nagroda: 0 Żetonów\n";
             	cout << "Jeśli klikniesz 1 będziesz musiał czekać 3 minuty\n";
             	cout << "Kliknij 0 aby wrócić do menu, kliknij 1 aby grać dalej\n";
             	cin >> dc;
                 if (dc == 0)
                 {
                 	menu();
                 }
                 else if (dc == 1)
                 {
                 	system("cls");
                 	cout << "Mozesz losować za 3 minuty\n";
                 	cout << "Uwaga: Nie spam literami ani liczbami\n";
                     sleep(180);
                     reward();
                 }
             }
         }
         break;
    }
}

 

1
komentarz 4 dni temu przez Jacek0325 Użytkownik (770 p.)

Witaj, mam małą podpowiedź, bo znalazłem co na szybko poprawić, żeby twój kod się kompilował - może to ci pomoże. Przynajmniej na moim Code::Blocks na Windowsie kompilacja zaczyna działać, kiedy:

  • dodam nagłówek #include <windows.h>
  • zamienię wszystkie wystąpienia sleep na Sleep (musi być z dużej litery)

Inna sprawa, że biblioteka windows.h działa tylko na Windowsie i w tej odpowiedzi przeczytać można opinię, że początkujący programista nie powinien jej używać. Jest tam też przykład z alternatywą dla funkcji Sleep(), która powinna działać też na Linuxie.

komentarz 4 dni temu przez Oscar Pasjonat (22,170 p.)

@Nikso, Przemysł strukturę programu, masz w sumie dwie kopie tego samego kodu. Jest to złe. Z samym plikiem to w sumie chyba pomyliłeś operatory, bo w linii 255 otwierasz plik do zapisu a chcesz z niego czytać a w linii 234 czytasz, ale nie widzę gdzie otwierasz.

komentarz 4 dni temu przez Nikso Nowicjusz (140 p.)
Dobrze skoro w linijce 255 otwieram plik do zapisu to dlaczego kiedy otwieram plik on jest pusty.
1
komentarz 3 dni temu przez Oscar Pasjonat (22,170 p.)
Otwierasz do zapisu, czytasz (?) i zamykasz. Otwarcie do zapisu ma flagę trunc(ate), czyli obcięcie pliku - w tym momencie jest pusty, nic nie zapisujesz i zamykasz. To jaki ma być?
komentarz 3 dni temu przez Nikso Nowicjusz (140 p.)
Teraz usunęłem trunc i zostawiłem ios::out dałem

file.open("save.txt", ios::out);

chips += 1000;

file << chips;

 Kedy wchodze w Nagrode wracam do menu i spowrotem wchodzę w pliku zapisuje się tylko liczba 5
komentarz 3 dni temu przez Nikso Nowicjusz (140 p.)

Wysyłam jak pozmieniałem kod

#include<iostream>
#include<time.h>
#include<cstdlib>
#include<conio.h>
#include<fstream>

using namespace std;

int chips = 5000;
int choice;
int dc;
int nagroda;
fstream file;

void open( const char * file, ios_base::openmode openfile);

void menu()
{
	system("cls");
    cout << "1. Nagroda\n"; 
    cout << "Żetony: " << chips << '\n';
    cout << endl;
    cout << "Wybierz\n";
    cin >> choice;
}

void reward()
{
         cout << "Nagroda\n";
         sleep(2);
     	system("cls");
     	cout << "Kliknij 0 aby wrócić do menu, kliknij 1 aby grać dalej\n";
         cin >> dc;
}

int main()
{
	file.open("save.txt", ios::out | ios::in);
	file << chips;
	menu();
    for(;;)
    switch(choice)
    {
    case 1:
         reward();
         if (dc == 0)
         {
         	menu();
         }
         else if (dc == 1)
         {
         	cout << "Kliknij Enter aby zobaczyć nagrode\n";
         	system("pause");
             srand(time(NULL));
             nagroda = rand()%8+1;
             if(nagroda == 1)
             {
             	chips += 1000;
             	file << chips;
             	cout << "Twoja nagroda: 1 000 Żetonów\n";
             	cout << "Jeśli klikniesz 1 będziesz musiał czekać 3 minuty\n";
             	cout << "Kliknij 0 aby wrócić do menu, kliknij 1 aby grać dalej\n";
                 cin >> dc;
                 if (dc == 0)
                 {
                 	menu();
                 }
                 else if (dc == 1)
                 {
                 	system("cls");
                 	cout << "Mozesz losować za 3 minuty\n";
                 	cout << "Uwaga: Nie spam literami ani liczbami\n";
                     sleep(1);
                     reward();
                 }
             }
             else if(nagroda == 2)
             {
             	chips += 5000;
             	file >> chips;
             	cout << "Twoja nagroda: 5 000 Żetonów\n";
             	cout << "Jeśli klikniesz 1 będziesz musiał czekać 3 minuty\n";
             	cout << "Kliknij 0 aby wrócić do menu, kliknij 1 aby grać dalej\n";
             	cin >> dc;
                 if (dc == 0)
                 {
                 	menu();
                 }
                 else if (dc == 1)
                 {
                 	system("cls");
                 	cout << "Mozesz losować za 3 minuty\n";
                 	cout << "Uwaga: Nie spam literami ani liczbami\n";
                     sleep(1);
                     reward();
                 }
             }
             else if(nagroda == 3)
             {
             	chips += 10000;
             	file << chips;
             	cout << "Twoja nagroda: 10 000 Żetonów\n";
             	cout << "Jeśli klikniesz 1 będziesz musiał czekać 3 minuty\n";
             	cout << "Kliknij 0 aby wrócić do menu, kliknij 1 aby grać dalej\n";
             	cin >> dc;
                 if (dc == 0)
                 {
                 	menu();
                 }
                 else if (dc == 1)
                 {
                 	system("cls");
                 	cout << "Mozesz losować za 3 minuty\n";
                 	cout << "Uwaga: Nie spam literami ani liczbami\n";
                     sleep(1);
                     reward();
                 }
             }
             else if(nagroda == 4)
             {
             	chips += 50000;
             	file << chips;
             	cout << "Twoja nagroda: 50 000 Żetonów\n";
             	cout << "Jeśli klikniesz 1 będziesz musiał czekać 3 minuty\n";
             	cout << "Kliknij 0 aby wrócić do menu, kliknij 1 aby grać dalej\n";
             	cin >> dc;
                 if (dc == 0)
                 {
                 	menu();
                 }
                 else if (dc == 1)
                 {
                 	system("cls");
                 	cout << "Mozesz losować za 3 minuty\n";
                 	cout << "Uwaga: Nie spam literami ani liczbami\n";
                     sleep(180);
                     reward();
                 }
             }
             else if(nagroda == 5)
             {
             	chips += 100000;
             	file << chips;
             	cout << "Twoja nagroda: 100 000 Żetonów\n";
             	cout << "Jeśli klikniesz 1 będziesz musiał czekać 3 minuty\n";
             	cout << "Kliknij 0 aby wrócić do menu, kliknij 1 aby grać dalej\n";
             	cin >> dc;
                 if (dc == 0)
                 {
                 	menu();
                 }
                 else if (dc == 1)
                 {
                 	system("cls");
                 	cout << "Mozesz losować za 3 minuty\n";
                 	cout << "Uwaga: Nie spam literami ani liczbami\n";
                     sleep(180);
                     reward();
                 }
             }
             else if(nagroda == 6)
             {
             	chips += 500000;
             	file << chips;
             	cout << "Twoja nagroda: 500 000 Żetonów\n";
             	cout << "Jeśli klikniesz 1 będziesz musiał czekać 3 minuty\n";
             	cout << "Kliknij 0 aby wrócić do menu, kliknij 1 aby grać dalej\n";
             	cin >> dc;
                 if (dc == 0)
                 {
                 	menu();
                 }
                 else if (dc == 1)
                 {
                 	system("cls");
                 	cout << "Mozesz losować za 3 minuty\n";
                 	cout << "Uwaga: Nie spam literami ani liczbami\n";
                     sleep(180);
                     reward();
                 }
             }
             else if(nagroda == 7)
             {
             	chips += 1000000000;
             	file << chips;
             	cout << "Twoja nagroda: 1 000 000 000 Żetonów\n";
             	cout << "Jeśli klikniesz 1 będziesz musiał czekać 3 minuty\n";
             	cout << "Kliknij 0 aby wrócić do menu, kliknij 1 aby grać dalej\n";
             	cin >> dc;
                 if (dc == 0)
                 {
                 	menu();
                 }
                 else if (dc == 1)
                 {
                 	system("cls");
                 	cout << "Mozesz losować za 3 minuty\n";
                 	cout << "Uwaga: Nie spam literami ani liczbami\n";
                     sleep(180);
                     reward();
                 }
             }
             else if(nagroda == 8)
             {
             	chips += 0;
             	cout << "Twoja nagroda: 0 Żetonów\n";
             	cout << "Jeśli klikniesz 1 będziesz musiał czekać 3 minuty\n";
             	cout << "Kliknij 0 aby wrócić do menu, kliknij 1 aby grać dalej\n";
             	cin >> dc;
                 if (dc == 0)
                 {
                 	menu();
                 }
                 else if (dc == 1)
                 {
                 	system("cls");
                 	cout << "Mozesz losować za 3 minuty\n";
                 	cout << "Uwaga: Nie spam literami ani liczbami\n";
                     sleep(180);
                     reward();
                 }
             }
         }
         break;
    }
    file.close();
}

 

Zaloguj lub zarejestruj się, aby odpowiedzieć na to pytanie.

Podobne pytania

+4 głosów
2 odpowiedzi 12,420 wizyt
0 głosów
1 odpowiedź 1,194 wizyt
pytanie zadane 27 września 2017 w C i C++ przez B0nkers Początkujący (310 p.)
+1 głos
1 odpowiedź 1,006 wizyt

86,403 zapytań

135,162 odpowiedzi

300,254 komentarzy

57,163 pasjonatów

Motyw:

Akcja Pajacyk

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

Oto dwie polecane książki warte uwagi. Pełną listę znajdziesz tutaj.

...