[C++] Process Returned -1073741819 (0xC0000005) przy tablicach i bibliotece fstream
Witam,
podczas kompilowania mojego kodu, którego zamieszczę poniżej, występuje błąd:
najpierw Windowsowy, który mówi "Program grarpg.exe przestał działać",
a potem w konsoli " Process Returned -1073741819 (0xC0000005) ".
Tworzę grę RPG dla uczenia się C++ i w momencie, gdy chcę
przerzucić wszystkie teksty menu głównego, wszystkich miejsc i opisów
do CPP, a robię to z pomocą biblioteki fstream. Każdy opis czy menu główne
posiada 4 linijki tekstu, więc stworzyłem stringi z tablicami. (spis,miejscelas,miejscemiasto,menu)
Dałem więc while'a, który robi pętle, gdy getline ma linijki do zbierania, a wiadomo, że gdy nie ma już
linijek, zatrzymuje się. W tej pętli zrobiłem inkrementację numerka linijki, który po każdej pętli
do danych zmiennych daje daną linijkę kodu. W ten sposób zrobiłem switcha, który właśnie jest tą każdą linijką
i dodaje linijki z .txt do zmiennych. W if'ie zrobiłem, że gdy już dobiegnie końca case 4, resetuje się while,
dodaje się nowa linijka. Nie wiem jak to wytłumaczyć, więc Ci bardziej zaawansowanie po prostu zrozumią.
Pytanie moje: Błędu tutaj żadnego nie ma, przynajmniej według mnie, a program i tak się wysypuje.
Kod źródłowy:
#include <iostream>
#include <fstream>
#include <cstdlib>
using namespace std;
string linia;
int nr_linii = 1;
string menu[ 4 ];
string miejscemiasto[ 4 ];
string miejscelas[ 4 ];
string spis[ 4 ];
int nrr = 0;
int wybor;
int main()
{
fstream plik;
plik.open( "gra.txt", ios::in );
if( plik.good() == false ) { cout << "Nie masz plikow gry!"; exit( 0 ); }
while( getline( plik, linia ) )
{
switch( nr_linii )
{
case 1: menu[ nrr ] = linia; break;
case 2: miejscelas[ nrr ] = linia; break;
case 3: miejscemiasto[ nrr ] = linia; break;
case 4: spis[ nrr ] = linia; break;
}
if( nr_linii == 4 ) { nr_linii = 1; nrr++; }
nr_linii++;
}
plik.close();
for( int i = 1; i <= 3; i++ )
{
cout << menu[ i ];
}
return 0;
}
A to są linijki tekstu, które chce mieć w każdej, pojedyńczej zmiennej:
GRA TEKSTOWA RPG
===============
1. Nowa gra
2. Wyjscie
Zloto:
Bron:
HP:
Imie:
1.Idz do lasu
2.Idz do sklepu
3.Idz na arene
4. Idz do straznika
1. Zabij zajaca (latwy)
2. Zabij wilka (sredni)
3. Zabij niedzwiedzia (trudny)
4. Do miasta