Witam! Jestem początkujący jeśli chodzi o c++ więc proszę o wyrozumiałość. Piszę sobie program, który ma za zadanie wyciąganie pewnych informacji z pliku, zapisanego w formie tabelki wg. schematu. Niestety! jego kompilacja przebiega bez errorów i waringów, ale od razu po uruchomieniu program "przestaje działać" i zwraca kod 3. Nie mam pojęcia co to znaczy i czym jest to spowodowane?
#include <iostream>
#include <fstream>
#include <string>
#include <conio.h>
#include <stdlib.h>
using namespace std;
//Deklaracje funkcji:
void wczytajdane(string * nprzed, string * npo, int * wprzed, int * wpo, int gracze);
void zapiszwynik(string * nprzed, string * npo, int * wprzed, int * wpo, int gracze);
bool isNumeric(string str);
// Zmienne globalne:
fstream dane;
fstream wyniki;
string dziedzina = NULL;
int main()
{
string temp;
cout << "Witaj w programie RuneScapeWars! \nPodaj koñcówkê nazwy pliku z danymi:" << endl;
cout << "Przyklad: Dane-04-11-18:00-19:00.txt" << endl;
cout << "Dane-";
cin >> temp;
string nazwapliku = "Dane-" + temp;
// PODMIENIÆ NA:
// dane.open(nazwapliku, std::ios::in);
dane.open("schemat.txt", std::ios::in);
if (!dane.good())
{
cout << "Nie znaleziono pliku o nazwie " << nazwapliku << "!!!";
getch();
return 0;
}
int iloscgraczy;
dane >> iloscgraczy;
string nazwyprzed[iloscgraczy];
string nazwypo[iloscgraczy];
int wartosciprzed[iloscgraczy];
int wartoscipo[iloscgraczy];
wczytajdane(nazwyprzed, nazwypo, wartosciprzed, wartoscipo, iloscgraczy);
dane.close();
cout << "Program zakonczyl dzialanie.";
getch();
}
void wczytajdane(string * nprzed, string * npo, int * wprzed, int * wpo, int gracze)
{
string linia;
char chr[256];
dane.getline(chr, 256);
linia = chr;
if (linia == "%END")
{
cout << "Osiagnieto koniec pliku." << endl;
return;
}
if (linia.substr(0, 1) == "#")
{
dziedzina = linia.substr(1, linia.length() - 1);
}
else
{
dane.getline(chr, 256);
linia = chr;
wczytajdane(nprzed, npo, wprzed, wpo, gracze);
return;
}
// START ORYGINA£
dane.getline(chr, 256);
linia = chr;
if (linia.substr(0, 1) != "@")
{
cout << "BLAD DZIALANIA PROGRAMU!! OCZEKIWANO ZNAKU @!!!" << endl;
getch();
return;
}
for(int i = 0; i < gracze - 1; i++)
{
dane.getline(chr, 256);
linia = chr;
while(linia.find(","))
{
linia.erase(linia.find(","), 1);
}
int j2 = 0;
int jj = 0;
for(int j = 0; j < linia.length() - 1; j++)
{
if (linia.substr(j, 1) == " ")
{
if(!isNumeric(linia.substr(j2, j - j2)))
{
if(nprzed[i] == "")
{
nprzed[i] += " ";
nprzed[i] += linia.substr(j2, j - j2);
}
else
{
nprzed[i] = linia.substr(j2, j - j2);
}
}
j2 = j;
}
jj = j;
}
if(isNumeric(linia.substr(j2, linia.length() - j2)))
{
wprzed[i] = strtol(linia.substr(j2, linia.length() - j2).c_str(), NULL, 10);
}
else
{
cout << "BLAD DZIALANIA PROGRAMU!! OCZEKIWANO LICZBY!!!" << endl;
getch();
return;
}
// KONIEC ORYGINA£U
}
}
bool isNumeric(string str)
{
for (int i=0; i < str.length() - 1; i++)
{
if( str[i]>15 && str[i]<26)
{
}
else
{
return false;
}
}
return true;
}