Witam serdecznie,
Może to lamerskie pytanie, ale już 2 godziny nad tym siedzę przeczesałem cała Sieć i nadal nie wiem, jak pobrać dane do rekordu z takiego pliku:
BDX 19950525 9,5 9,5 9,5 9,5 334204
BDX 19950526 9,5 9,5 9,5 9,5 261742
BDX 19950529 9,7 9,7 9,7 9,7 213816
BDX 19950530 8,75 8,75 8,75 8,75 163232
BDX 19950531 8,85 8,85 8,85 8,85 102292
BDX 19950601 8,1 8,1 8,1 8,1 41106
BDX 19950602 8,2 8,2 8,2 8,2 64278
BDX 19950605 8,7 8,7 8,7 8,7 31687
Prosty delimiter (spacja), prawda? To dlaczego poniższy program wywala SIGSEGV? Byłbym wdzięczny za jakieś wskazówki.
#include <iostream>
#include...
using namespace std;
struct rekord{
char *ticker;
float open, close;
float low, high;
long int vol;
};
int main(int argc, char **argv)
{
ifstream plikGPW;
vector<rekord> tablica;
int ileRekordow = 0;
char linijka[200];
char *spolka = argv[1];
strcat(spolka,".dat");
cout << "Otwieram plik: "<<spolka<<"\n";
plikGPW.open(spolka, ios::in);
if(!plikGPW) exit(1);
while(plikGPW.getline(linijka,200)){
rekord tmp;
istringstream strumien(linijka);
//tutaj jest SIGSEGV:
strumien >> tmp.ticker >> tmp.open >> tmp.high >> tmp.low >> tmp.close >> tmp.vol;
tablica.push_back(tmp);
ileRekordow++;
}
cout << "Pobrano "<<ileRekordow<<" rekordow\n";
plikGPW.close();
return 0;
}