Zdravím, řeším načítání textu z CSV souboru, ve kterém jsou na každém řádku 3 řetězce oddělené znakem ';'.
Pomocí getline() načítám text do proměnné string radek dokud nenarazí na ';'.
Pak ukládám retezce do struktury Ukoly typu UKOL která má 3 atributy typu string.
Jenomže program spadne a nevím jak tomu zabránit.
#include <stdlib.h>
#include <iostream>
#include <stdio.h>
#include <string>
#include <string.h>
#include <fstream>
using namespace std;
struct UKOL
{
string zacatek;
string konec;
string popis;
};
int importCSV(UKOL *Ukoly,int &pocetUkolu);
int main()
{
UKOL *Ukoly=NULL;
int pocetUkolu=0;
if(importCSV(Ukoly, pocetUkolu))
cout << endl << "Nacteni ukolu problehlo uspesne." << endl;
return 0;
}
int importCSV(UKOL *Ukoly,int &pocetUkolu){
string nazev="ukoly.csv";
string radek;
ifstream vstup;
vstup.open((const char *) nazev.c_str());
if(!vstup.is_open())
{
cout << "Soubor se nepodarilo otevrit." << endl;
Ukoly=NULL;
return 0;
}
while(!vstup.eof())
{
getline(vstup,radek,';');
if(radek.length()==0)
break;
if(pocetUkolu==0)
Ukoly=(UKOL*)malloc(sizeof(UKOL)*(++pocetUkolu));
else
Ukoly=(UKOL*)realloc(Ukoly,sizeof(UKOL)*(++pocetUkolu));
Ukoly[pocetUkolu-1].zacatek=radek;
getline(vstup,radek,';');
Ukoly[pocetUkolu-1].konec=radek;
getline(vstup,radek,'\n');
Ukoly[pocetUkolu-1].popis=radek;
}
if(pocetUkolu==0)
{
cout << "Soubor je prazdny." << endl;
vstup.close();
return 0;
}
return 1;
}