tak jak w temacie gdzie mogło mi się to dziadostwo zapętlić że jak zamykam plik od razu wyskakuje mi okienko program przerwał działanie Przepraszam za moją składnię
#include <iostream>
#include <fstream>
#include <cstdlib>
#include <string>
#include <cstring>
#include <cstdio>
#include <sstream>
using namespace std;
string chartostring(char *slowo){
stringstream ss;
string s;
ss << slowo;
ss >> s;
return s ;
}
struct osoby{
string imie;
string nazwisko;
char NrKarty[20];
float zadluzenie;
string oznaczenie;
};
osoby ludziska[100];
struct piniandz{
string oznaczenie;
string nazwa;
float kde;//kurs do euro
float kdd;//kurs do dolara
};
piniandz waluty[50];
string rozpoznanie(string &linijka ){
if((int) linijka[1]<96)
return "waluty";
else return "osoby";
}
string* podzial(string wiersz){
int x=0;
int dlugosc=wiersz.length();
string slowo;
string *dane=new string[5];
for(int i=0;i<dlugosc;i++){
if(wiersz[i]!=' '){
slowo+=wiersz[i];
}
else{
*(dane+x)=slowo;
slowo="";
x++;
}
if(i==dlugosc-1){*(dane+x)=slowo;}
}
return dane;
delete [] dane;}
string* podzial2(string wiersz){
int x=0;
int dlugosc=wiersz.length();
string slowo;
string *dane=new string[4];
for(int i=0;i<dlugosc;i++){
if(wiersz[i]!=' '){
slowo+=wiersz[i];
}
else{
*(dane+x)=slowo;
slowo="";
x++;
}
if(i==dlugosc-1){*(dane+x)=slowo;}
}
return dane;
delete [] dane;
}
float konwersja(string napis){
float y=(float)atof(napis.c_str());
return y;
}
int main(int argc,char *argv[]) {
//cout << argc << endl;
if(argc==4){
//cout<<argc<<endl;
fstream plik;
for(int i=1;i<argc;i++){
plik.open(argv[i],ios::in);
cout<<plik.good()<<endl;
if(plik.good()==true){
while(!plik.eof()){
string wiersz;
getline(plik,wiersz);
//cout<<rozpoznanie(wiersz)<<endl;
if(rozpoznanie(wiersz)=="osoby"){
int static raz=0;
ludziska[raz].imie=*(podzial(wiersz));
ludziska[raz].nazwisko=*(podzial(wiersz)+1);
strcpy(ludziska[raz].NrKarty,(*(podzial(wiersz)+2)).c_str());
ludziska[raz].zadluzenie=konwersja(*(podzial(wiersz)+3));
ludziska[raz].oznaczenie=*(podzial(wiersz)+4);
//ludziska[raz]={*(podzial(wiersz)),*(podzial(wiersz)+1),((*(podzial(wiersz)+2)).c_str()),konwersja(*(podzial(wiersz)+3)),*(podzial(wiersz)+4)};
raz++;}
if(rozpoznanie(wiersz)=="waluty"){
int static x=0;
waluty[x].oznaczenie=*(podzial2(wiersz));
waluty[x].nazwa=*(podzial2(wiersz)+1);
waluty[x].kde=konwersja(*(podzial2(wiersz)+2));
waluty[x].kdd=konwersja(*(podzial2(wiersz)+3));
x++;}
}plik.close(); //
}
}
//cout<<ludziska[0].NrKarty<<endl;
//cout<<ludziska[3].zadluzenie<<endl;
//cout<<waluty[0].oznaczenie<<endl;
}
else{cout<<"Program nalezy uruchomic podajac trzy argumenty."<<endl;
return EXIT_FAILURE;}
}
z góry dziękuję za pomoc