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

Zapis i odczyt z pliku

Object Storage Arubacloud
0 głosów
509 wizyt
pytanie zadane 13 stycznia 2022 w C i C++ przez Nikso Nowicjusz (230 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 14 stycznia 2022 przez Jacek0325 Obywatel (1,040 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 14 stycznia 2022 przez Oscar Nałogowiec (29,290 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 14 stycznia 2022 przez Nikso Nowicjusz (230 p.)
Dobrze skoro w linijce 255 otwieram plik do zapisu to dlaczego kiedy otwieram plik on jest pusty.
1
komentarz 14 stycznia 2022 przez Oscar Nałogowiec (29,290 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 14 stycznia 2022 przez Nikso Nowicjusz (230 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 14 stycznia 2022 przez Nikso Nowicjusz (230 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

0 głosów
1 odpowiedź 265 wizyt
pytanie zadane 13 listopada 2022 w C i C++ przez piotr_domanski Bywalec (2,080 p.)
+4 głosów
2 odpowiedzi 15,080 wizyt
0 głosów
1 odpowiedź 1,819 wizyt
pytanie zadane 27 września 2017 w C i C++ przez B0nkers Początkujący (310 p.)

92,540 zapytań

141,383 odpowiedzi

319,481 komentarzy

61,928 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.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...